Come può un file di testo a zero byte generare un hash quando viene hash con sha1sum, sha256sum ecc? Quali dati hanno i programmi con hashing per generare un valore hash?
Ta
Come può un file di testo a zero byte generare un hash quando viene hash con sha1sum, sha256sum ecc? Quali dati hanno i programmi con hashing per generare un valore hash?
Ta
Risposte:
Gli algoritmi hash leggono l'input e lo elaborano, indipendentemente dal fatto che ci siano dati. Questo è un comportamento valido e desiderato e viene persino utilizzato per verificare se una determinata implementazione è corretta. Questo porta a "hash null" per tutti i principali algoritmi.
Per riassumere: da39a3ee5e6b4b0d3255bfef95601890afd80709 è lo sha1-hash per un file vuoto ovunque, lo stesso vale per gli hash null di altri alrogritmi.
Tutti gli algoritmi di hash in Quick Hash sono costruzioni di Merkle – Damgård . Di conseguenza, inseriscono il messaggio in un multiplo della dimensione del blocco.
Gli algoritmi di Quick Hash ottengono questo risultato aggiungendo un 1
po ', quanti 0
bit necessari e infine la lunghezza del messaggio.
Ciò consente l'hashing di messaggi di lunghezza arbitraria, inclusi i messaggi di lunghezza zero.
(Componente aggiuntivo alla risposta di Dennis e fixer1234?)
succintamente:
$ shasum -a 256 /dev/null
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
Tutti i file a 0 byte avranno lo stesso checksum.
$ shasum -a 512 /dev/null
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null
da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null
MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(nota: MD5 è rotto; non è un 'hash sicuro'. Questo è documentato nella voce MD5 in Wikipedia.)
Pertanto, ad esempio, se stai cercando di verificare l'innocuità dei file su virustotal.com con uno dei valori di hash sicuri elencati qui, ad esempio, da39a3ee5e6b4b0d3255bfef95601890afd80709
puoi essere sicuro che il file fosse effettivamente 0 byte (o era una cartella, che virustotal, confusamente, hash come se fosse un file a 0 byte.)