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
Ř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.