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.
Jenis: | String |
Nilai yang diterima: | SHA1, SHA256, SHA384, SHA512, MD5 |
Position: | 1 |
Nilai default: | SHA256 |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-InputStream
Menentukan aliran input.
Jenis: | Stream |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | 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.
Jenis: | String[] |
Alias: | PSPath, LP |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Path
Menentukan jalur ke satu atau beberapa file sebagai array. Karakter kartubebas diizinkan.
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
Input
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.