W jaki sposób zerowy bajt pliku tekstowego może generować skrót podczas mieszania z sha1sum, sha256sum itp.? Jakie dane są mieszane przez programy w celu wygenerowania wartości skrótu?
Ta
Algorytmy mieszania odczytują dane wejściowe i przetwarzają je, bez względu na to, czy w ogóle są dane. Jest to prawidłowe i pożądane zachowanie, a nawet służy do sprawdzenia, czy określona implementacja jest poprawna. Prowadzi to do „zerowych skrótów” dla wszystkich głównych algorytmów.
Podsumowując: da39a3ee5e6b4b0d3255bfef95601890afd80709 jest skrótem sha1 dla pustego pliku wszędzie, to samo dotyczy zerowych skrótów innych algorytmów.
Wszystkie algorytmy mieszające w Quick Hash są konstrukcjami Merkle – Damgård . Dlatego wypełniają wiadomość wielokrotnością rozmiaru bloku.
Algorytmy Quick Hash osiągają to, dodając
1
trochę, tyle0
bitów, ile potrzeba, a na końcu długość wiadomości.Umożliwia to mieszanie wiadomości o dowolnej długości, w tym wiadomości o zerowej długości.
źródło
(Dodatek do odpowiedzi Dennisa i fixer1234?)
Treściwie:
$ shasum -a 256 /dev/null e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
Wszystkie pliki 0-bajtowe będą miały tę samą sumę kontrolną.
$ shasum -a 512 /dev/null cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(uwaga: MD5 jest zepsuty; nie jest to „bezpieczny hash”. Jest to udokumentowane we wpisie MD5 w Wikipedii).Tak więc, na przykład, jeśli próbujesz zweryfikować nieszkodliwość plików w virustotal.com za pomocą jednej z wymienionych tutaj bezpiecznych wartości skrótu, np.
da39a3ee5e6b4b0d3255bfef95601890afd80709
Możesz być pewien, że plik rzeczywiście miał 0 bajtów (lub był folderem, który virustotal, myląco, haszy, jakby to był plik 0-bajtowy.)źródło