Sdílet prostřednictvím


Get-FileHash

Vypočítá hodnotu hash souboru pomocí zadaného hashovacího algoritmu.

Syntaxe

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

Description

Rutina Get-FileHash vypočítá hodnotu hash souboru pomocí zadaného algoritmu hash. Hodnota hash je jedinečná hodnota, která odpovídá obsahu souboru. Místo identifikace obsahu souboru podle názvu souboru, přípony nebo jiného označení přiřadí hodnota hash k obsahu souboru jedinečnou hodnotu. Názvy souborů a přípony lze změnit beze změny obsahu souboru a beze změny hodnoty hash. Podobně lze obsah souboru změnit beze změny názvu nebo přípony. Změna i jednoho znaku v obsahu souboru ale změní hodnotu hash souboru.

Účelem hodnot hash je poskytnout kryptograficky bezpečný způsob, jak ověřit, že se obsah souboru nezměnil. I když některé hashovací algoritmy, včetně MD5 a SHA1, se už nepovažují za bezpečné proti útoku, cílem zabezpečeného hashovacího algoritmu je znemožnit náhodné změny obsahu souboru nebo úmyslným nebo neoprávněným pokusem a zachovat stejnou hodnotu hash. Hodnoty hash můžete použít také k určení, jestli mají dva různé soubory přesně stejný obsah. Pokud jsou hodnoty hash dvou souborů identické, obsah souborů je také stejný.

Ve výchozím nastavení používá rutina Get-FileHash algoritmus SHA256, i když je možné použít jakýkoli algoritmus hash podporovaný cílovým operačním systémem.

Příklady

Příklad 1: Výpočet hodnoty hash pro soubor PowerShell.exe

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

Tento příkaz používá rutinu Get-FileHash k výpočtu hodnoty hash souboru Powershell.exe. Použitý algoritmus hash je výchozí algoritmus SHA256. Výstup se předá rutině Format-List pro formátování výstupu jako seznamu.

Příklad 2: Výpočet hodnoty hash pro soubor 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

Tento příkaz používá rutinu Get-FileHash a algoritmus SHA384 k výpočtu hodnoty hash souboru ISO, který správce stáhl z internetu. Výstup se předá rutině Format-List pro formátování výstupu jako seznamu.

Příklad 3: Vypočítá hodnotu hash datového proudu a porovná postup se získáním hodnoty hash ze souboru přímo.

# 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

Parametry

-Algorithm

Určuje kryptografickou funkci hash, která se má použít pro výpočet hodnoty hash obsahu zadaného souboru. Kryptografická funkce hash obsahuje vlastnost, kterou není možné najít dva odlišné vstupy, které generují stejné hodnoty hash. Funkce hash se běžně používají s digitálními podpisy a pro integritu dat. Přijatelné hodnoty pro tento parametr jsou:

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

Pokud není zadaná žádná hodnota nebo pokud parametr vynecháte, výchozí hodnota je SHA256.

Z bezpečnostních důvodů, MD5 a SHA1, které se už nepovažují za bezpečné, by se měly používat pouze pro jednoduché ověřování změn a neměly by se používat ke generování hodnot hash pro soubory, které vyžadují ochranu před útokem nebo manipulací.

Typ:String
Přípustné hodnoty:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-InputStream

Určuje vstupní datový proud.

Typ:Stream
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-LiteralPath

Určuje cestu k souboru. Na rozdíl od parametru Path se hodnota parametru LiteralPath používá přesně tak, jak je zadán. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete cestu do jednoduchých uvozovek. Jednoduché uvozovky dávají PowerShellu pokyn, aby neinterpretoval znaky jako řídicí sekvence.

Typ:String[]
Aliasy:PSPath
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Path

Určuje cestu k jednomu nebo více souborům jako pole. Jsou povoleny zástupné znaky.

Typ:String[]
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:True

Vstupy

String

Řetězec můžete přeskakovat do rutiny Get-FileHash, která obsahuje cestu k jednomu nebo více souborům.

Výstupy

Microsoft.PowerShell.Utility.FileHash

Get-FileHash vrátí objekt, který představuje cestu k zadanému souboru, hodnotu vypočítané hodnoty hash a algoritmus použitý k výpočtu hodnoty hash.