Wie vergleicht man Teile von Dateien per Hash?

Wie vergleicht man Teile von Dateien per Hash?

Ich habe eine Datei erfolgreich heruntergeladen und einen anderen, bei dem der Download fehlgeschlagen ist (nur die ersten 100 MB einer großen Datei), bei dem es sich vermutlich um dieselbe Datei handelt.

Um dies zu überprüfen, möchte ich ihre Hashes prüfen, aber da ich nur einen Teil der erfolglos heruntergeladenen Datei habe, möchte ich nur die ersten paar Megabyte oder so hashen.

Wie mache ich das?

Das Betriebssystem wäre Windows, aber ich habe Cygwin und MinGW installiert.

Antwort1

Das Erstellen von Hashes zum Vergleichen von Dateien ist dann sinnvoll, wenn Sie eine Datei mit mehreren oder viele Dateien miteinander vergleichen.

Beim einmaligen Vergleichen zweier Dateien ist dies nicht sinnvoll: Der Aufwand zur Berechnung der Hashes ist mindestens so hoch, als wenn man die Dateien durchgeht und direkt vergleicht.

Ein effizientes Tool zum Vergleichen von Dateien ist cmp:

cmp --bytes $((100 * 1024 * 1024)) file1 file2 && echo "File fragments are identical"

Sie können es auch kombinieren, um ddbeliebige Teile (nicht notwendigerweise vom Anfang) zweier Dateien zu vergleichen, zB:

cmp \
    <(dd if=file1 bs=100M count=1 skip=1 2>/dev/null) \
    <(dd if=file2 bs=100M count=1 skip=1 2>/dev/null) \
&& echo "File fragments are identical"

Antwort2

Es tut mir leid, dass ich das nicht genau versuchen kann, aber so wird es funktionieren

dd if=yourfile.zip of=first100mb1.dat bs=100M count=1
dd if=yourotherfile.zip of=first100mb2.dat bs=100M count=1

Dadurch erhalten Sie die ersten 100 Megabyte beider Dateien.

Holen Sie sich jetzt die Hashes:

sha256sum first100mb1.dat && sha256sum first100mb2.dat 

Sie können es auch direkt ausführen:

dd if=yourfile.zip bs=100M count=1 | sha256sum 
dd if=yourotherfile.zip bs=100M count=1 | sha256sum 

Antwort3

Jeder scheint hier den Unix/Linux-Weg zu gehen, aber der Vergleich von zwei Dateien kann problemlos mit den Standardbefehlen von Windows durchgeführt werden:
FC /B file file2

FC ist in jeder jemals veröffentlichten Windows NT-Version vorhanden. Und (wenn ich mich recht erinnere) war es auch in DOS vorhanden.
Es ist ein bisschen langsam, aber das spielt bei einmaliger Verwendung keine Rolle.

Antwort4

Ich weiß, dass es für Bash steht, aber OP gibt auch an, dass sie Windows haben. Für alle, die eine Windows-Lösung wollen/benötigen, gibt es ein Programm namens HxD, einen Hex-Editor, der zwei Dateien vergleichen kann. Wenn die Dateien unterschiedliche Größen haben, wird angezeigt, ob die verfügbaren Teile gleich sind. Und bei Bedarf kann es Prüfsummen für das ausführen, was gerade ausgewählt ist. Es ist kostenlos und kann hier heruntergeladen werden:die HxD-Website. Ich habe keine Verbindung zum/zu den Autor(en), ich benutze es einfach schon seit Jahren.

verwandte Informationen