2016-04-12 16 views
0

Ich werde mein Bestes tun, um meine missliche Lage zu beschreiben.SHA-256 Differierende Ergebnisse

Ich schreibe ein Python-Skript, das eine Eingabedatei nimmt und einen SHA-256-Hash darauf durchführt.

Wenn ich das Raw-Binary-Bild nehmen und es durch die Eingabeaufforderung (auf meinem Mac: shasum -a 256 somefile.bin), erhalte ich die 'richtigen' verdauen: 'bda1ca ...'

Ich habe diese Binärdatei über einen Online-Rechner laufen lassen und das gleiche Ergebnis erhalten.

Wenn ich diesen Hash in einem Hex-Editor öffnen, extrahieren alle Bytes in meine Zwischenablage und fügen sie in einen SHA256 Rechner ich ein anderes Ergebnis: ‚689035 ...‘

Was soll ich hier fehlt ? Ich habe oben/unten Cash, Leerzeichen zwischen jedem Byte versucht. Ich bin mir nicht sicher, was ich sonst noch versuchen sollte.

Dieses Problem begann, weil ich dies in Python implementiere, aber bevor ich mir Sorgen über den Code mache, versuche ich zu verstehen, warum das anders ist.

+0

Ich werde dvxam Antwort als richtig wählen. Eigentlich war mein Python-Skript korrekt, aber ich las die Dateien aufgrund falscher Anweisungen in der falschen Reihenfolge! Allerdings erklärte dvxam es gründlich genug, dass ich es jetzt verstehe. –

Antwort

1

Wenn Sie auf Ihrer Tastatur die "Bytes" aus Ihrem Hex-Editor kopieren, kopieren Sie höchstwahrscheinlich nur eine String-Darstellung davon.

vielleicht werden diese Befehle helfen Ihnen, es zu bekommen:

$ echo "Hello, world" > my_bin 

$ shasum -a 256 my_bin 
37980c33951de6b0e450c3701b219bfeee930544705f637cd1158b63827bb390 - 


$ cat my_bin | shasum -a 256 
37980c33951de6b0e450c3701b219bfeee930544705f637cd1158b63827bb390 - 

$ cat my_bin | xxd -p | shasum -a 256 
0e535a1a279db9753bcbc226b9305e6e6a39ba2d866c01a44cb9aac8d5fc9833 - 

(xxd ist ein Hex-Editor i verwendet Inhalt der Datei anzuzeigen)

+0

Danke, das verstehe ich sehr. Was ist der Weg dazu? Zum Beispiel - die Binärdatei, die ich eine SHA256 ausführen, ist ein kleineres Stück einer größeren Binärdatei. Wenn ich SHA256 die kleinere binäre bin, bekomme ich ein Ergebnis, aber wenn ich nur die Werte in mein Python-Skript "lese", bekomme ich eine andere. –