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