"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como calcular com eficiência o hash MD5 de arquivos grandes em Python

Como calcular com eficiência o hash MD5 de arquivos grandes em Python

Publicado em 2024-11-04
Navegar:707

How to Efficiently Compute MD5 Hash of Large Files in Python

Calcular hash MD5 de arquivos grandes com eficiência em Python

Em certos cenários, torna-se necessário calcular o hash MD5 de arquivos grandes que excedem a RAM disponível. A função nativa do Python hashlib.md5() não é adequada para tais cenários, pois requer que o arquivo inteiro seja carregado na memória.

Para superar essa limitação, uma abordagem prática é ler o arquivo em partes gerenciáveis ​​e atualize iterativamente o hash. Isso permite o cálculo eficiente de hash sem exceder os limites de memória.

Implementação 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()

Exemplo de uso

Para calcular o hash MD5 de um arquivo, use a seguinte sintaxe:

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

A variável md5_hash conterá o hash MD5 computado como um objeto semelhante a bytes.

Considerações adicionais

Certifique-se de abrir o arquivo em binário mode ('rb') para evitar resultados incorretos. Para um processamento abrangente de arquivos, considere a seguinte função:

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 função pega um caminho de arquivo e retorna o hash MD5 como uma string hexadecimal.

Ao utilizar essas técnicas, você pode calcular hashes MD5 com eficiência para arquivos grandes sem encontrar limitações de memória.

Declaração de lançamento Este artigo foi reimpresso em: 1729387820 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3