Bagaimana file nol byte dapat menghasilkan nilai hash?

20

Bagaimana file teks nol byte dapat menghasilkan hash ketika hash dengan sha1sum, sha256sum dll? Data apa yang hashing program untuk menghasilkan nilai hash?

Ta

QuickHash di Linux

Perintah Terminal

Gizmo_the_Great
sumber

Jawaban:

21

Algoritma hash membaca input dan memprosesnya, tidak masalah jika ada data sama sekali. Ini adalah perilaku yang valid dan diinginkan dan bahkan digunakan untuk memverifikasi jika implementasi tertentu benar. Ini mengarah ke "null-hashes" untuk semua algoritma utama.

Untuk meringkasnya: da39a3ee5e6b4b0d3255bfef95601890afd80709 adalah hasa-hash untuk file kosong di mana-mana, hal yang sama berlaku dengan hash null dari alogitma lainnya.

Sascha Kaupp
sumber
1
Nah, Anda belajar sesuatu yang baru setiap hari! Saya tidak tahu ada "nilai nol" untuk setiap algoritma. Terimakasih banyak.
Gizmo_the_Great
3
Algoritme hash memiliki kondisi awal yang telah ditentukan - jenis seperti angka yang mereka mulai dan bermutasi saat mereka membaca dalam data. Jika tidak ada data untuk dibaca, hash hanyalah hasil dari kondisi awal yang telah ditetapkan.
Kevin
Alasannya juga karena algoritma sha1 menambahkan panjang data (dalam hal ini: nol) dan ada beberapa flag dan padding yang ditambahkan ke dalam pesan juga. Jadi bahkan "tidak ada data" masih akan menghasilkan beberapa data yang sedang diproses.
user92979
14

Semua algoritma hash di Quick Hash adalah konstruksi Merkle-Damgård . Dengan demikian, mereka membungkus pesan ke kelipatan ukuran blok.

Algoritme Quick Hash mencapainya dengan menambahkan 1sedikit, sebanyak yang 0diperlukan, dan akhirnya panjang pesan.

Ini memungkinkan pesan hashing dengan panjang sewenang-wenang, termasuk pesan panjang nol.

Dennis
sumber
Jika alasan edit saya membingungkan, saya awalnya salah membaca jawaban Anda dan menulis ulang "untuk kejelasan", kemudian menyadari bahwa edit saya salah dan kembali dan memperbaikinya. Sistem menggabungkan dua penjelasan karena berada dalam rentang waktu yang sama.
fixer1234
1

(Add-on untuk Dennis dan jawaban fixer1234?)

Singkatnya:

$ shasum -a 256 /dev/null e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null

Semua file 0-byte akan memiliki checksum yang sama.

$ shasum -a 512 /dev/null cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null

$ shasum /dev/null da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null

$ md5 /dev/null MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e (catatan: MD5 rusak; ini bukan 'hash aman'. Ini didokumentasikan dalam entri MD5 di Wikipedia.)

Jadi, misalnya, jika Anda mencoba memverifikasi tidak bersalahnya file di virustotal.com dengan salah satu nilai hash aman yang tercantum di sini, mis. da39a3ee5e6b4b0d3255bfef95601890afd80709Anda dapat yakin bahwa file tersebut memang 0 byte (atau folder, yang virustotal, membingungkan, hash seolah-olah itu file 0-byte.)

Matthew Elvey
sumber
Bagaimana ini menambah jawaban saat ini?
Máté Juhász
Dengan memberikan cara langsung bagi orang yang skeptis untuk memverifikasi bahwa inilah kasus bahwa Semua file 0-byte akan memiliki checksum yang sama. Beberapa orang skeptis akan hal ini ketika membahas ketidakbersalahan file 0-byte di virustotal.com. Jadi saya pikir itu menambah solusi cara untuk seseorang yang datang ke pertanyaan ini tidak yakin apakah itu benar bahwa jika checksum adalah cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff83f487e227gaduhup
Matthew Elvey