Compartilhar via


Get-FileHash

Calcula o valor de hash de um arquivo usando um algoritmo de hash especificado.

Sintaxe

Get-FileHash
   [-Path] <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -LiteralPath <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -InputStream <Stream>
   [-Algorithm <String>]
   [<CommonParameters>]

Description

O cmdlet Get-FileHash calcula o valor de hash de um arquivo usando um algoritmo de hash especificado. Um valor de hash é um valor exclusivo que corresponde ao conteúdo do arquivo. Em vez de identificar o conteúdo de um arquivo por seu nome de arquivo, extensão ou outra designação, um hash atribui um valor exclusivo ao conteúdo de um arquivo. Nomes de arquivo e extensões podem ser alterados sem alterar o conteúdo do arquivo e sem alterar o valor de hash. Da mesma forma, o conteúdo do arquivo pode ser alterado sem alterar o nome ou a extensão. No entanto, alterar até mesmo um único caractere no conteúdo de um arquivo altera o valor de hash do arquivo.

A finalidade dos valores de hash é fornecer uma maneira criptograficamente segura de verificar se o conteúdo de um arquivo não foi alterado. Embora alguns algoritmos de hash, incluindo MD5 e SHA1, não sejam mais considerados seguros contra ataques, o objetivo de um algoritmo de hash seguro é tornar impossível alterar o conteúdo de um arquivo por acidente ou por tentativa mal-intencionada ou não autorizada e manter o mesmo valor de hash. Você também pode usar valores de hash para determinar se dois arquivos diferentes têm exatamente o mesmo conteúdo. Se os valores de hash de dois arquivos forem idênticos, o conteúdo dos arquivos também será idêntico.

Por padrão, o cmdlet Get-FileHash usa o algoritmo SHA256, embora qualquer algoritmo de hash compatível com o sistema operacional de destino possa ser usado.

Exemplos

Exemplo 1: computar o valor de hash para um arquivo PowerShell.exe

PS C:\> Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash      : 6A785ADC0263238DAB3EB37F4C185C8FBA7FEB5D425D034CA9864F1BE1C1B473
Path      : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Esse comando usa o cmdlet Get-FileHash para calcular o valor de hash do arquivo Powershell.exe. O algoritmo de hash usado é o padrão, SHA256. A saída é canalizada para o cmdlet Format-List para formatar a saída como uma lista.

Exemplo 2: Computar o valor de hash para um arquivo ISO

PS C:\> Get-FileHash C:\Users\Andris\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List

Algorithm : SHA384
Hash      : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path      : C:\Users\Andris\Downloads\Contoso8_1_ENT.iso

Esse comando usa o cmdlet Get-FileHash e o algoritmo SHA384 para calcular o valor de hash de um arquivo ISO que um administrador baixou da Internet. A saída é canalizada para o cmdlet Format-List para formatar a saída como uma lista.

Exemplo 3: computar o valor de hash de um fluxo e comparar o procedimento com a obtenção do hash do arquivo diretamente

# Path of Microsoft.PowerShell.Utility.psd1
$file = (Get-Module Microsoft.PowerShell.Utility).Path

$hashFromFile = Get-FileHash -Path $file -Algorithm MD5

# Open $file as a stream
$stream = [System.IO.File]::OpenRead($file)
$hashFromStream = Get-FileHash -InputStream $stream -Algorithm MD5
$stream.Close()

Write-Host '### Hash from File ###' -NoNewline
$hashFromFile | Format-List
Write-Host '### Hash from Stream ###' -NoNewline
$hashFromStream | Format-List

# Check both hashes are the same
if ($hashFromFile.Hash -eq $hashFromStream.Hash) {
	Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
	Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}

### Hash from File ###

Algorithm : MD5
Hash      : 593D6592BD9B7F9174711AB136F5E751
Path      : C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules\Microsoft.Powe
            rShell.Utility\Microsoft.PowerShell.Utility.psd1

### Hash from Stream ###

Algorithm : MD5
Hash      : 593D6592BD9B7F9174711AB136F5E751
Path      :

Get-FileHash results are consistent

Parâmetros

-Algorithm

Especifica a função de hash criptográfica a ser usada para calcular o valor de hash do conteúdo do arquivo especificado. Uma função de hash criptográfica inclui a propriedade de que não é possível localizar duas entradas distintas que geram os mesmos valores de hash. As funções de hash geralmente são usadas com assinaturas digitais e para integridade de dados. Os valores aceitáveis para este parâmetro são:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

Se nenhum valor for especificado ou se o parâmetro for omitido, o valor padrão será SHA256.

Por motivos de segurança, MD5 e SHA1, que não são mais considerados seguros, só devem ser usados para validação de alteração simples e não devem ser usados para gerar valores de hash para arquivos que exigem proteção contra ataques ou adulterações.

Tipo:String
Valores aceitos:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputStream

Especifica o fluxo de entrada.

Tipo:Stream
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-LiteralPath

Especifica o caminho para um arquivo. Ao contrário do parâmetro Path, o valor do parâmetro LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque o caminho entre aspas simples. Aspas simples instruem o PowerShell a não interpretar caracteres como sequências de escape.

Tipo:String[]
Aliases:PSPath
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Path

Especifica o caminho para um ou mais arquivos como uma matriz. Caracteres curinga são permitidos.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

Entradas

String

Você pode canalizar uma cadeia de caracteres para o cmdlet get-FileHash que contém um caminho para um ou mais arquivos.

Saídas

Microsoft.PowerShell.Utility.FileHash

Get-FileHash retorna um objeto que representa o caminho para o arquivo especificado, o valor do hash computado e o algoritmo usado para calcular o hash.