Comment calculer efficacement le hachage MD5 de fichiers volumineux en Python

Linda Hamilton
Libérer: 2024-10-20 09:52:30
original
925 Les gens l'ont consulté

How to Efficiently Compute MD5 Hash of Large Files in Python

Calculer efficacement le hachage MD5 des fichiers volumineux en Python

Dans certains scénarios, il devient nécessaire de calculer le hachage MD5 des fichiers volumineux qui dépassent la RAM disponible. La fonction Python native hashlib.md5() ne convient pas à de tels scénarios car elle nécessite que l'intégralité du fichier soit chargée en mémoire.

Pour surmonter cette limitation, une approche pratique consiste à lire le fichier en morceaux gérables et mettre à jour le hachage de manière itérative. Cela permet un calcul de hachage efficace sans dépasser les limites de mémoire.

Implémentation du code

<code class="python">import hashlib

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

Exemple d'utilisation

Pour calculer le hachage MD5 d'un fichier, utilisez la syntaxe suivante :

<code class="python">with open(filename, 'rb') as f:
    md5_hash = md5_for_file(f)</code>
Copier après la connexion

La variable md5_hash contiendra le hachage MD5 calculé en tant qu'objet de type octets.

Considérations supplémentaires

Assurez-vous d'ouvrir le fichier en mode binaire ('rb ') pour éviter des résultats incorrects. Pour un traitement complet des fichiers, envisagez la fonction suivante :

<code class="python">import os
import hashlib

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

Cette fonction prend un chemin de fichier et renvoie le hachage MD5 sous forme de chaîne hexadécimale.

En utilisant ces techniques, vous pouvez calculer efficacement Hachages MD5 pour les fichiers volumineux sans rencontrer de limitations de mémoire.

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!