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 změnu obsahu souboru – ať už omylem, 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 souboru
Tento příklad používá rutinu Get-FileHash
k výpočtu hodnoty hash souboru /etc/apt/sources.list
. Použitý algoritmus hash je výchozí algoritmus SHA256. Výstup se předá rutině Format-List
, aby výstup naformátoval jako seznam.
Get-FileHash /etc/apt/sources.list | Format-List
Algorithm : SHA256
Hash : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path : /etc/apt/sources.list
Příklad 2: Výpočet hodnoty hash pro soubor ISO
Tento příklad používá rutinu Get-FileHash
a algoritmus SHA384 k výpočtu hodnoty hash pro soubor ISO, který správce stáhl z internetu. Výstup se předá rutině Format-List
, aby výstup naformátoval jako seznam.
Get-FileHash C:\Users\user1\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List
Algorithm : SHA384
Hash : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path : C:\Users\user1\Downloads\Contoso8_1_ENT.iso
Příklad 3: Výpočet hodnoty hash datového proudu
V tomto příkladu používáme System.Net.WebClient ke stažení balíčku ze stránky verze PowerShellu. Stránka verze také dokumentuje hodnotu hash SHA256 každého souboru balíčku. Publikovanou hodnotu hash můžeme porovnat s hodnotou, kterou vypočítáme Get-FileHash
pomocí .
$wc = [System.Net.WebClient]::new()
$pkgurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.debian.9_amd64.deb'
$publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC'
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
$FileHash.Hash -eq $publishedHash
True
Příklad 4: Výpočet hodnoty hash řetězce
PowerShell neposkytuje rutinu pro výpočet hodnoty hash řetězce. Můžete ale napsat řetězec do datového proudu a pomocí parametru Get-FileHash
InputStream získat hodnotu hash.
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("Hello world")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream | Select-Object Hash
Hash
----
64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C
Parametry
-Algorithm
Určuje kryptografickou funkci hash, která se má použít pro výpočet hodnoty hash obsahu zadaného souboru nebo datového proudu. Kryptografická funkce hash má vlastnost, že je neproveditelná k vyhledání dvou různých souborů se stejnou hodnotou hash. Funkce hash se běžně používají s digitálními podpisy a pro integritu dat. Tento parametr přijímá tyto hodnoty:
- SHA1
- SHA256
- SHA384
- SHA512
- MD5
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, MD5 |
Position: | 1 |
Default value: | SHA256 |
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: | 0 |
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ána. Žá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, LP |
Position: | 0 |
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: | True |
Přijmout zástupné znaky: | True |
Vstupy
Do této rutiny můžete zamísit řetězec obsahující cestu k souboru.
Výstupy
Microsoft.PowerShell.Utility.FileHash
Tato rutina vrátí objekt představující cestu k zadanému souboru, hodnotu vypočítané hodnoty hash a algoritmus použitý k výpočtu hodnoty hash.