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

Linda Hamilton
Libérer: 2024-10-20 10:13:30
original
666 Les gens l'ont consulté

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

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

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

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!

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!