2016-11-10 3 views
0

Ich habe eine große Datei, die ich komprimieren muss, aber ich muss sicherstellen, dass die ursprüngliche Datei den gleichen Hash-Wert wie der komprimierte hat. Ich habe es in einer kleineren Datei ausprobiert, Hashwerte sind unterschiedlich, aber ich denke, dass dies an Metadatenänderungen liegen könnte. Wie stelle ich sicher, dass sich die Dateien nach der Komprimierung nicht ändern?Ändert die Komprimierung den Hashwert?

+0

Zunächst, wenn Sie die ursprüngliche unkomprimierte Datei Hash und dann die komprimierte Datei Hash, dann ja, diese haben unterschiedliche Hashwerte. Auf der anderen Seite, wenn Sie die ursprüngliche unkomprimierte Datei Hash-und dann Hash-Inhalt hinter der Komprimierung (dh Sie dekomprimieren und Hash), dann, nein, ein anderer Hash würde bedeuten, gebrochene Komprimierung oder Dekomprimierung. –

Antwort

0

Es hängt davon ab, welche Scheu Sie verwenden. Wenn Sie crc32 verwenden, ist es ziemlich trivial, Ihre Hashes gleich zu machen. MD5 könnte schon möglich sein (ich kenne den Anfang der Technik dort nicht), SHA1 wird wahrscheinlich in ein paar Jahren machbar sein. Wenn Sie SHA256 verwenden, geben Sie besser auf.

Snark über gebrochene Krypto beiseite, es sei denn, Ihr Hash-Algorithmus weiß speziell über Ihre Komprimierung Setup oder Ihre Eingabedatei wurde sehr sorgfältig erstellt, um eine Hash-Kollision zu provozieren: der Hash wird vor und nach der Komprimierung ändern. Das bedeutet, dass sich jeder standardmäßige kryptografische Hashwert bei der Komprimierung ändert.

Der gesamte Hash-Algorithmus sieht einen Strom von Bits ohne Bedeutung. Es kennt keine Komprimierungsschemata und sollte dies nicht tun.

+0

Ich habe versucht, sie vor und nach Hashing - die Hash-Werte erweisen sich als unterschiedlich, ich fragte mich daher, ob dies vielleicht nur aufgrund von Metadaten über die Datei anders sein könnte (die Zip hat einen anderen Namen und Erstellungsdatum). – michal111

+0

Auf welcher Plattform befinden Sie sich? Wenn Sie sich in einem Linux/Mac/Unix-Setup befinden, ist es am einfachsten zu erklären: – Matthias

+0

In '$ cat myFile | md5sum' vs '$ cat myFile | Komprimierungsprogramm | md5sum' Das Programm md5sum sieht überhaupt keine Metadaten oder Dateinamen. – Matthias

0

Wenn Ihr Hash ein CRC-32 ist, dann können Sie vier Bytes in die komprimierten Daten einfügen oder anfügen, und diese setzen, um den ursprünglichen CRC zu erhalten. Zum Beispiel können Sie in einem gzip-Stream einen zusätzlichen Vier-Byte-Block in der Kopfzeile einfügen.

Der ganze Punkt der kryptografischen Hashes, wie MD5 als ein Tag zu der Frage notiert, ist es, das äußerst schwierig oder praktisch unmöglich zu machen.

Verwandte Themen