Bagikan melalui


Get-FileHash

Menghitung nilai hash untuk file dengan menggunakan algoritma hash tertentu.

Sintaks

Path (Default)

Get-FileHash
    [-Path] <String[]>
    [[-Algorithm] <String>]
    [<CommonParameters>]

LiteralPath

Get-FileHash
    [-LiteralPath] <String[]>
    [[-Algorithm] <String>]
    [<CommonParameters>]

StreamParameterSet

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

Deskripsi

cmdlet Get-FileHash 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, cmdlet Get-FileHash 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 cmdlet Get-FileHash untuk menghitung nilai hash untuk file /etc/apt/sources.list. Algoritma hash yang digunakan adalah default, SHA256. Output disalurkan ke cmdlet Format-List 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 cmdlet Get-FileHash dan algoritma SHA384 untuk menghitung nilai hash untuk file ISO yang telah diunduh administrator dari internet. Output disalurkan ke cmdlet Format-List 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, kami 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()

$baseurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/'
$pkgname = 'powershell_6.2.4-1.debian.9_amd64.deb'
$pkgurl = $baseurl + $pkgname

$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 InputStreamGet-FileHash 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.

Properti parameter

Jenis:String
Nilai default:SHA256
Nilai yang diterima:SHA1, SHA256, SHA384, SHA512, MD5
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-InputStream

Menentukan aliran input.

Properti parameter

Jenis:Stream
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

StreamParameterSet
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa: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 pengganti. Jika jalur menyertakan karakter escape, sertakan jalur dalam tanda kutip tunggal. Tanda kutip tunggal menginstruksikan PowerShell untuk tidak menafsirkan karakter sebagai urutan escape.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:PSPath, LP

Set parameter

LiteralPath
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Path

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

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:True
DontShow:False

Set parameter

Path
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

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.