Berechnen von MD5-Hashes für große Dateien in Python
Einführung
Bestimmen des MD5-Hashes von Große Dateien können eine Herausforderung darstellen, wenn ihre Größe den verfügbaren Speicher übersteigt. Dieser Artikel stellt eine praktische Lösung zum Berechnen von MD5-Hashes vor, ohne die gesamte Datei in den Speicher zu laden.
Lösung
Um den MD5-Hash großer Dateien zu berechnen, ist es wichtig zu lesen sie in überschaubaren Stücken. Das folgende Code-Snippet demonstriert dies:
<code class="python">def md5_for_file(f, block_size=2**20): md5 = hashlib.md5() while True: data = f.read(block_size) if not data: break md5.update(data) return md5.digest()</code>
Durch Angabe einer geeigneten Blockgröße liest diese Funktion die Datei in Blöcken und aktualisiert kontinuierlich den MD5-Hash mit jedem Block.
Verbessert Code
Um den Prozess zu optimieren, sollten Sie den folgenden erweiterten Code in Betracht ziehen:
<code class="python">def generate_file_md5(rootdir, filename, blocksize=2**20): m = hashlib.md5() with open(os.path.join(rootdir, filename), "rb") as f: while True: buf = f.read(blocksize) if not buf: break m.update(buf) return m.hexdigest()</code>
Hier wird die Datei im Binärmodus („rb“) geöffnet, um Binärdaten korrekt zu verarbeiten. Die Funktion durchläuft dann die Datei, aktualisiert den Hash und gibt die hexadezimale Darstellung des endgültigen Hashs zurück.
Gegenprüfung der Ergebnisse
Um die Genauigkeit sicherzustellen, ziehen Sie Cross in Betracht -Überprüfen der Ergebnisse mit einem speziellen Tool wie „jacksum“:
jacksum -a md5 <filename>
Dadurch wird eine unabhängige MD5-Hash-Berechnung zum Vergleich bereitgestellt.
Das obige ist der detaillierte Inhalt vonWie berechnet man MD5-Hashes für große Dateien in Python ohne Speicherüberlastung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!