Saya ingin menghitung checksum MD5 dari beberapa konten. Bagaimana saya melakukan ini di PowerShell?
powershell
powershell-2.0
Luke101
sumber
sumber
Jawaban:
Jika kontennya berupa string:
Jika konten adalah file:
Mulai di PowerShell versi 4, ini mudah dilakukan untuk file di luar kotak dengan
Get-FileHash
cmdlet:Ini tentu saja lebih disukai karena menghindari masalah yang ditawarkan oleh solusi pertama seperti yang diidentifikasi dalam komentar (menggunakan aliran, menutupnya, dan mendukung file besar).
sumber
Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size."
Sebagai orang Linux yang baru mengenal Powershell, saya sangat jengkel dengan perjuangan yang saya alami untuk mendapatkan jumlah md5, yang hanya adamd5sum file.ext
di Linux.$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
Ini memberi Anda penggunaan memori rendah dan tidak ada batas 2GB .$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
maka$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
kemudian$stream.Close()
Jika Anda menggunakan PowerShell Community Extensions ada commandlet Get-Hash yang akan melakukan ini dengan mudah:
sumber
Get-FileHash
di vanilla PowerShell 4.0. Vide TechNet .Berikut adalah dua baris, cukup ganti "halo" di baris # 2:
sumber
Inilah fungsi yang saya gunakan yang menangani jalur relatif dan absolut:
Terima kasih kepada @davor di atas atas saran untuk menggunakan Open () dan bukan ReadAllBytes () dan ke @ jpmc26 untuk saran untuk menggunakan blok akhirnya.
sumber
Dispose
panggilan harus berada dalamfinally
blok.Perintah bawaan lain yang telah lama diinstal di Windows secara default sejak 2003 adalah Certutil , yang tentu saja dapat dipanggil dari PowerShell juga.
(Peringatan: MD5 harus dalam semua batas untuk ketahanan maksimal)
sumber
FipsAlgorithmPolicy
diaktifkan.Ada banyak contoh online menggunakan ComputeHash (). Pengujian saya menunjukkan ini sangat lambat ketika menjalankan koneksi jaringan. Cuplikan di bawah ini berjalan lebih cepat untuk saya, namun jarak tempuh Anda mungkin berbeda-beda:
sumber
write-progress
telepon? Stabilo sintaks sepertinya tidak menyukainya.Situs ini memiliki contoh: Menggunakan Powershell untuk Checksums MD5 . Ia menggunakan .NET framework untuk membuat instance dari algoritma hash MD5 untuk menghitung hash.
Berikut kode dari artikel tersebut, menggabungkan komentar Stephen:
sumber
Sebagaimana dinyatakan dalam jawaban yang diterima,
Get-FileHash
mudah digunakan dengan file, tetapi juga dimungkinkan untuk menggunakannya dengan string:sumber
Sekarang ada fungsi Get-FileHash yang sangat berguna.
Ubah saja
SHA384
keMD5
.Contohnya adalah dari dokumentasi resmi PowerShell 5.1 . Dokumentasi memiliki lebih banyak contoh.
sumber
Ini menjadi satu baris jika Anda mengunduh File Checksum Integrity Verifier (FCIV) dari Microsoft.
Saya mengunduh FCIV dari sini: Ketersediaan dan deskripsi utilitas Verifikasi Pemeriksaan File Checksum
Jalankan perintah berikut. Saya punya sepuluh file untuk diperiksa.
sumber
PowerShell One-Liners (string ke hash)
MD5
SHA1
SHA256
SHA384
SHA512
sumber
Ini akan mengembalikan hash MD5 untuk file di komputer jarak jauh:
sumber
Contoh untuk opsi menu klik kanan juga:
sumber
Ini adalah contoh cantik yang mencoba memverifikasi sidik jari SHA256. Saya mengunduh gpg4win v3.0.3 menggunakan PowerShell v4 (membutuhkan
Get-FileHash
).Unduh paket dari https://www.gpg4win.org/download.html , buka PowerShell, ambil hash dari halaman unduh, dan jalankan:
Keluaran:
sumber
Berikut ini adalah contoh satu baris-perintah dengan baik menghitung checksum yang tepat dari berkas , seperti yang baru saja Anda unduh, dan membandingkannya dengan checksum asli yang diterbitkan.
Sebagai contoh, saya menulis contoh untuk mengunduh dari proyek Apache JMeter . Dalam hal ini Anda memiliki:
Kemudian menggunakan perintah PowerShell ini, Anda dapat memverifikasi integritas file yang diunduh:
Keluaran:
Penjelasan:
Operan pertama
-eq
operator adalah hasil perhitungan checksum untuk file:Operan kedua adalah nilai checksum yang dipublikasikan. Kami pertama-tama mendapatkan konten file.md5 yang merupakan satu string dan kemudian kami mengekstrak nilai hash berdasarkan format string:
Baik file dan file.md5 harus berada di folder yang sama untuk pekerjaan perintah ini.
sumber
Inilah yang saya gunakan untuk mendapatkan nilai hash yang konsisten:
sumber
Berikut ini cuplikan yang saya gunakan untuk mendapatkan MD5 untuk string yang diberikan:
sumber