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

Patricia Arquette
Libérer: 2024-10-20 11:03:30
original
626 Les gens l'ont consulté

How to Compute MD5 Hashes of Large Files in Python Without Memory Limitations?

Calcul du hachage MD5 de fichiers volumineux en Python

Bien que l'utilisation du module hashlib de Python pour calculer le hachage MD5 d'un fichier soit simple pour les petits fichiers, cela devient peu pratique pour les fichiers volumineux qui dépassent la mémoire disponible. Cet article explore une solution pratique à ce défi.

Pour contourner la limite de mémoire, hashlib doit avoir accès à des morceaux du fichier plutôt qu'à l'intégralité du fichier à la fois. La fonction Python suivante lit un fichier en morceaux de taille spécifiée et accumule les hachages MD5 partiels. En définissant une taille appropriée pour le paramètre block_size (par défaut : 2^20), il gère efficacement les tailles de fichiers au-delà des limites de la RAM.

<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>
Copier après la connexion

Pour garantir des résultats corrects, ouvrez le fichier en mode binaire avec 'rb' est essentiel.

Pour une approche plus complète, une fonction d'assistance peut encapsuler toutes les étapes nécessaires :

<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>
Copier après la connexion

La vérification croisée des résultats à l'aide d'outils comme Jacksum garantit l'exactitude des hachages MD5 calculés. .

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!