Get-FileHash

Menghitung nilai hash untuk file dengan menggunakan algoritma hash tertentu.

Sintaks

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

Deskripsi

Get-FileHash Cmdlet menghitung nilai hash untuk file dengan menggunakan algoritma hash tertentu. Nilai hash adalah nilai unik yang sesuai dengan konten file. Daripada mengidentifikasi konten file dengan nama file, ekstensi, atau penunjukan lainnya, hash menetapkan nilai unik ke konten file. Nama file dan ekstensi dapat diubah tanpa mengubah konten file, dan tanpa mengubah nilai hash. Demikian pula, konten file dapat diubah tanpa mengubah nama atau ekstensi. Namun, mengubah bahkan satu karakter dalam konten file mengubah nilai hash file.

Tujuan nilai hash adalah untuk menyediakan cara yang aman secara kriptografis untuk memverifikasi bahwa konten file belum diubah. Meskipun beberapa algoritma hash, termasuk MD5 dan SHA1, tidak lagi dianggap aman terhadap serangan, tujuan dari algoritma hash yang aman adalah untuk merender tidak mungkin untuk mengubah konten file -- baik secara tidak sengaja, atau dengan upaya berbahaya atau tidak sah -- dan mempertahankan nilai hash yang sama. Anda juga dapat menggunakan nilai hash untuk menentukan apakah dua file yang berbeda memiliki konten yang sama persis. Jika nilai hash dari dua file identik, konten file juga identik.

Secara default, Get-FileHash cmdlet menggunakan algoritma SHA256, meskipun algoritma hash apa pun yang didukung oleh sistem operasi target dapat digunakan.

Contoh

Contoh 1: Menghitung nilai hash untuk file

Contoh ini menggunakan Get-FileHash cmdlet untuk menghitung nilai hash untuk /etc/apt/sources.list file. Algoritma hash yang digunakan adalah default, SHA256. Output disalurkan ke Format-List cmdlet untuk memformat output sebagai daftar.

Get-FileHash /etc/apt/sources.list | Format-List

Algorithm : SHA256
Hash      : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path      : /etc/apt/sources.list

Contoh 2: Menghitung nilai hash untuk file ISO

Contoh ini menggunakan Get-FileHash cmdlet dan algoritma SHA384 untuk menghitung nilai hash untuk file ISO yang telah diunduh administrator dari internet. Output disalurkan ke Format-List cmdlet untuk memformat output sebagai daftar.

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

Contoh 3: Menghitung nilai hash aliran

Untuk contoh ini, kita mendapatkan menggunakan System.Net.WebClient untuk mengunduh paket dari halaman rilis Powershell. Halaman rilis juga mendokumentasikan hash SHA256 dari setiap file paket. Kita dapat membandingkan nilai hash yang diterbitkan dengan yang kita hitung dengan Get-FileHash.

$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

Contoh 4: Menghitung hash string

PowerShell tidak menyediakan cmdlet untuk menghitung hash string. Namun, Anda dapat menulis string ke aliran dan menggunakan parameter Get-FileHash InputStream untuk mendapatkan nilai 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

Parameter

-Algorithm

Menentukan fungsi hash kriptografi yang akan digunakan untuk menghitung nilai hash konten file atau aliran yang ditentukan. Fungsi hash kriptografi memiliki properti yang tidak layak untuk menemukan dua file berbeda dengan nilai hash yang sama. Fungsi hash umumnya digunakan dengan tanda tangan digital dan untuk integritas data. Nilai yang dapat diterima untuk parameter ini adalah:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MD5

Jika tidak ada nilai yang ditentukan, atau jika parameter dihilangkan, nilai defaultnya adalah SHA256.

Untuk alasan keamanan, MD5 dan SHA1, yang tidak lagi dianggap aman, hanya boleh digunakan untuk validasi perubahan sederhana, dan tidak boleh digunakan untuk menghasilkan nilai hash untuk file yang memerlukan perlindungan dari serangan atau perusakan.

Type:String
Accepted values:SHA1, SHA256, SHA384, SHA512, MD5
Position:1
Default value:SHA256
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputStream

Menentukan aliran input.

Type:Stream
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Menentukan jalur ke file. Tidak seperti parameter Jalur, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai karakter kartubebas. Jika jalur menyertakan karakter escape, sertakan jalur dalam tanda kutip tunggal. Tanda kutip tunggal menginstruksikan PowerShell untuk tidak menafsirkan karakter sebagai urutan escape.

Type:String[]
Aliases:PSPath, LP
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Menentukan jalur ke satu atau beberapa file sebagai array. Karakter kartubebas diizinkan.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

Input

String

Anda dapat menyalurkan string yang berisi jalur ke file ke cmdlet ini.

Output

Microsoft.PowerShell.Utility.FileHash

Cmdlet ini mengembalikan objek yang mewakili jalur ke file yang ditentukan, nilai hash komputasi, dan algoritma yang digunakan untuk menghitung hash.