In che modo i file a zero byte possono generare un valore hash?


20

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

QuickHash in Linux

Comandi terminali

Risposte:


21

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.


1
Bene, impari qualcosa di nuovo ogni giorno! Non sapevo che ci fosse un "valore nullo" per ogni algoritmo. Grazie molto.
Gizmo_the_Great

3
Gli algoritmi hash hanno una condizione iniziale predeterminata - un po 'come un numero con cui iniziano e mutano mentre leggono nei dati. Se non ci sono dati da leggere, l'hash è solo il risultato di quella condizione iniziale preimpostata.
Kevin,

Il motivo è anche perché l'algoritmo sha1 aggiunge la lunghezza dei dati (in questo caso: zero) e ci sono anche alcuni flag e padding aggiunti nel messaggio. Quindi anche "nessun dato" comporterà comunque l'elaborazione di alcuni dati.
user92979,

14

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 1po ', quanti 0bit necessari e infine la lunghezza del messaggio.

Ciò consente l'hashing di messaggi di lunghezza arbitraria, inclusi i messaggi di lunghezza zero.


Se il motivo della mia modifica è confuso, inizialmente ho letto male la tua risposta e l'ho riformulata "per chiarezza", poi ho capito che la mia modifica era sbagliata e sono tornata indietro e l'ho riparata. Il sistema ha consolidato le due spiegazioni perché era nella stessa finestra temporale.
fixer1234,

1

(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, da39a3ee5e6b4b0d3255bfef95601890afd80709puoi 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.)


In che modo ciò si aggiunge alle risposte attuali?
Máté Juhász,

Fornendo un modo diretto per uno scettico di verificare che tutti i file a 0 byte abbiano lo stesso checksum Diverse persone ne erano scettiche quando discutevano dell'innocuità dei file a 0 byte su virustotal.com. Quindi penso che aggiunga alla soluzione un modo per qualcuno che arriva a questa domanda non è sicuro che sia vero che se il checksum è cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff83186328e31d3f17d17a31dc3fc3d17dcf
Matthew Elvey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.