Maison  >  Article  >  développement back-end  >  Comment calculer les hachages MD5 pour les fichiers volumineux en Python sans surcharge de mémoire ?

Comment calculer les hachages MD5 pour les fichiers volumineux en Python sans surcharge de mémoire ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-20 10:13:30671parcourir

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

Calcul des hachages MD5 pour les fichiers volumineux en Python

Introduction

Détermination du hachage MD5 de les fichiers volumineux peuvent poser un problème lorsque leur taille dépasse la mémoire disponible. Cet article présente une solution pratique pour calculer les hachages MD5 sans charger l'intégralité du fichier en mémoire.

Solution

Pour calculer le hachage MD5 des fichiers volumineux, il est indispensable de lire les en morceaux gérables. L'extrait de code suivant le démontre :

<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>

En spécifiant une taille de bloc appropriée, cette fonction lit le fichier par morceaux et met continuellement à jour le hachage MD5 avec chaque morceau.

Amélioré Code

Pour rationaliser le processus, considérez le code amélioré suivant :

<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>

Ici, le fichier est ouvert en mode binaire ("rb") pour gérer correctement les données binaires. La fonction parcourt ensuite le fichier, met à jour le hachage et renvoie la représentation hexadécimale du hachage final.

Résultats de vérification croisée

Pour garantir l'exactitude, envisagez la vérification croisée -vérifier les résultats avec un outil dédié comme "jacksum":

jacksum -a md5 <filename>

Cela fournira un calcul de hachage MD5 indépendant à des fins de comparaison.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn