Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man MD5-Hashes für große Dateien in Python ohne Speicherüberlastung?

Wie berechnet man MD5-Hashes für große Dateien in Python ohne Speicherüberlastung?

Linda Hamilton
Linda HamiltonOriginal
2024-10-20 10:13:30668Durchsuche

How to Calculate MD5 Hashes for Large Files in Python without Memory Overloading?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn