Wie kann eine Null-Byte-Textdatei einen Hash erzeugen, wenn sie mit sha1sum, sha256sum usw. gehasht wird? Welche Daten werden von den Programmen gehasht, um einen Hashwert zu generieren?
Ta
Wie kann eine Null-Byte-Textdatei einen Hash erzeugen, wenn sie mit sha1sum, sha256sum usw. gehasht wird? Welche Daten werden von den Programmen gehasht, um einen Hashwert zu generieren?
Ta
Antworten:
Hash-Algorithmen lesen die Eingabe und verarbeiten sie, egal ob überhaupt Daten vorliegen. Dies ist ein gültiges und gewünschtes Verhalten und wird sogar verwendet, um zu überprüfen, ob eine bestimmte Implementierung korrekt ist. Dies führt zu "Null-Hashes" für alle wichtigen Algorithmen.
Um es zusammenzufassen: da39a3ee5e6b4b0d3255bfef95601890afd80709 ist der sha1-Hash für eine leere Datei überall, dasselbe gilt für die Null-Hashes anderer Algorithmen.
Alle Hash-Algorithmen in Quick Hash sind Merkle-Damgård-Konstruktionen . Als solches füllen sie die Nachricht auf ein Vielfaches der Blockgröße auf.
Die Algorithmen von Quick Hash erreichen dies, indem sie ein 1
Bit, so viele 0
Bits wie nötig und schließlich die Nachrichtenlänge anhängen .
Dies ermöglicht das Hashing von Nachrichten beliebiger Länge, einschließlich Nachrichten mit Nulllänge.
(Add-on zu Dennis und fixer1234s Antwort?)
Kurz gesagt:
$ shasum -a 256 /dev/null
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
Alle 0-Byte-Dateien haben dieselbe Prüfsumme.
$ shasum -a 512 /dev/null
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null
da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null
MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(Hinweis: MD5 ist defekt; es ist kein "sicherer Hash". Dies ist im MD5-Eintrag in Wikipedia dokumentiert.)
Wenn Sie beispielsweise versuchen, die Unschädlichkeit von Dateien auf virustotal.com mit einem der hier aufgelisteten sicheren Hash-Werte zu überprüfen , können Sie z. B. da39a3ee5e6b4b0d3255bfef95601890afd80709
sicher sein, dass die Datei tatsächlich 0 Byte groß war (oder ein Ordner, der virustotal, verwirrenderweise, Hashes, als ob es eine 0-Byte-Datei ist.)