Ich habe es geschafft, einen Code zur Berechnung der Datei-Prüfsumme zu erstellen. Unten ist der Code:Python String Checksum Rechner
from Crypto.Hash import *
def get_file_checksum(filename):
h = SHA384.new()
chunk_size = 8192
with open(filename, 'rb') as f:
while True:
chunk = f.read(chunk_size)
if len(chunk) == 0:
break
h.update(chunk)
return h.hexdigest()
Jetzt dachte ich an eine andere Funktion, um die Prüfsumme einer gegebenen Zeichenfolge zu berechnen. Hier ist der Code
def get_string_checksum(string):
h = SHA384.new()
h.update(string)
return h.hexdigest()
Das Problem, das ich mit Blick auf bin, ist, dass die Ausgabe der Zeichenfolge Prüfsumme nicht, dass der Inhalt der Datei entspricht.
Für eine bestimmte Datei auf meinem System bekomme ich diese Werte
get_file_checksum(filename)
erhalten:
d57eec87df9c5ec33baab34be4ac7695a59d80779d10e8920640fac62f4bfa2b0da0cef0b0d7d6d1e16cae5ca560cd95
get_string_checksum(string)
erhalten:
18044418f40f12e9601d0f15a7da46c114779ac337fd8fe513a122e2aa95a9b5e05d6b00d46d0682c0054c5f2b3355c0
Die Zeichenfolge, die ich verwendet ein Argument ist genauso wie der Inhalt der Datei.
Ich verwende diese Website, um die Prüfsummen zu überprüfen: https://defuse.ca/checksums.htm#checksums
Gibt es etwas falsch mit get_string_checksum(string)
?
prüfen neue Linie Hinter. Es würde die Ergebnisse völlig anders machen. – Anonymous
@jonrsharpe Danke für eine schnelle Antwort. Ich habe sowohl die Datei als auch die Zeichenfolge überprüft, es gibt keine leere neue Zeile. Ich habe sogar den Code mit dem 'strip()' z. 'h.update (string.strip())' und 'h.update (chunk.strip())' aber die Ergebnisse sind immer noch unterschiedlich. Allerdings passiert etwas Seltsames. Wenn ich die Länge des Inhalts der Datei und die Länge des Strings kurz vor 'h.update (string.strip()) 'ausdrucke, erwarte ich, dass die String-Längen gleich sind, aber auch unterschiedlich sind. – Drmaposa
Sie ergeben unterschiedliche Prüfsummen, weil Sie die Zeichenfolgen aus dem Speicher eingeben. Versuchen Sie, die Zeichenfolge aus derselben Datei zu lesen. – wind85