Ich bin durch einen Ordner mit binären Dateien iterieren und versuche für jede Datei Hash-Werte, speziell sha1 und sha256 zu berechnen. Bei meinen Läufen bekomme ich seltsamerweise die gleichen sha256-Werte für alle Dateien, aber die sha1-Werte sind unterschiedlich (also korrekt).Verschiedene SHA1 aber gleiche SHA256
Unten ist ein Screenshot einer Ausgabedatei, die zeigt, dass sha1 Hashing korrekt durchgeführt wurde. Aber sha256 ist nicht. (Leider Dateinamen jeder Binärdatei ist auch seine SHA1)
Gibt es etwas falsch mit meinem Prozess? Dies ist der relevante Code in Python. ICH SEHE NICHT ETWAS. Es tut uns leid.
out.write("FILENAME,SHA1,SHA256\n")
for root, dirs, files in os.walk(input_path):
for ffile in files:
myfile = os.path.join(root, ffile)
nice = os.path.join(os.getcwd(), myfile)
fo = open(nice, "rb")
a = hashlib.sha1(fo.read())
b = hashlib.sha256(fo.read())
paylname = os.path.basename(myfile)
mysha1 = str(a.hexdigest())
mysha256 = str(b.hexdigest())
fo.close()
out.write("{0},{1},{2}\n".format(paylname, mysha1, mysha256))
Was denken Sie, 'fo.read()' wird gelesen, wenn es den Inhalt der Datei bereits gelesen hat? – deceze
Wenn Sie 'fo.read()' für den sha1-Hash ausführen, haben Sie die gesamte Datei gelesen, aber Sie bewegen den Cursor nie zurück zum Anfang der Datei. also ist die Eingabe in den Hash sha256 immer die gleiche (nichts) –
'hashlib.sha256 (b ''). hexdigest() == 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'' –