"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo calcular eficientemente el hash MD5 de archivos grandes en Python

Cómo calcular eficientemente el hash MD5 de archivos grandes en Python

Publicado el 2024-11-04
Navegar:893

How to Efficiently Compute MD5 Hash of Large Files in Python

Calcule el hash MD5 de archivos grandes de manera eficiente en Python

En ciertos escenarios, se hace necesario calcular el hash MD5 de archivos grandes que exceden la RAM disponible. La función nativa de Python hashlib.md5() no es adecuada para tales escenarios ya que requiere que todo el archivo se cargue en la memoria.

Para superar esta limitación, un enfoque práctico es leer el archivo en fragmentos manejables y actualice iterativamente el hash. Esto permite un cálculo hash eficiente sin exceder los límites de memoria.

Implementación de código

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()

Ejemplo de uso

Para calcular el hash MD5 de un archivo, use la siguiente sintaxis:

with open(filename, 'rb') as f:
    md5_hash = md5_for_file(f)

La variable md5_hash contendrá el hash MD5 calculado como un objeto similar a bytes.

Consideraciones adicionales

Asegúrese de abrir el archivo en binario mode ('rb') para evitar resultados incorrectos. Para un procesamiento completo de archivos, considere la siguiente función:

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()

Esta función toma una ruta de archivo y devuelve el hash MD5 como una cadena hexadecimal.

Al utilizar estas técnicas, puede calcular eficientemente hashes MD5 para archivos grandes sin encontrar limitaciones de memoria.

Declaración de liberación Este artículo se reimprime en: 1729387820 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3