Maison >développement back-end >Tutoriel Python >Comment calculer efficacement le hachage MD5 de fichiers volumineux en Python ?
Calcul du hachage MD5 de fichiers volumineux en Python
Lorsque vous travaillez avec des fichiers extrêmement volumineux, les méthodes traditionnelles de calcul des hachages MD5 à l'aide de la bibliothèque hashlib deviennent peu pratiques car ils nécessitent de charger l’intégralité du fichier en mémoire. Cette approche peut épuiser les ressources du système, entraînant des erreurs et des ralentissements.
Solution : hachage fragmenté
Pour résoudre ce problème, une technique appelée hachage fragmenté peut être utilisée pour calculer Hachage MD5 de manière incrémentielle sans charger l'intégralité du fichier en mémoire. Cela implique :
Implémentation du code :
La fonction Python suivante md5_for_file() implémente le hachage fragmenté :
<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>
Pour utiliser cette fonction, assurez-vous d'ouvrir le fichier en mode binaire (rb).
Méthode complète :
Pour plus de commodité, voici une méthode complète generate_file_md5() qui combine le hachage fragmenté et l'ouverture de fichier en une seule étape :
<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>
Cette méthode renvoie le hachage MD5 codé en hexadécimal du fichier spécifié sous forme de chaîne. Vous pouvez vérifier les résultats à l'aide d'outils externes comme Jacksum à 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!