«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно вычислить MD5-хеш больших файлов в Python

Как эффективно вычислить MD5-хеш больших файлов в Python

Опубликовано 4 ноября 2024 г.
Просматривать:717

How to Efficiently Compute MD5 Hash of Large Files in Python

Эффективное вычисление хэша MD5 больших файлов в Python

В определенных сценариях становится необходимым вычислить хэш MD5 больших файлов, размер которых превышает доступную оперативную память. Собственная функция Python hashlib.md5() не подходит для таких сценариев, поскольку она требует загрузки всего файла в память.

Чтобы преодолеть это ограничение, практичным подходом является чтение файла управляемыми фрагментами и итеративно обновлять хэш. Это позволяет эффективно вычислять хеш-функции, не превышая ограничений памяти.

Реализация кода

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

Пример использования

Чтобы вычислить хэш MD5 файла, используйте следующий синтаксис:

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

Переменная md5_hash будет содержать вычисленный хэш MD5 в виде байтового объекта.

Дополнительные соображения

Обязательно открывайте файл в двоичном формате mode ('rb'), чтобы избежать неверных результатов. Для комплексной обработки файлов рассмотрите следующую функцию:

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

Эта функция принимает путь к файлу и возвращает хэш MD5 в виде шестнадцатеричной строки.

Используя эти методы, вы можете эффективно вычислять хэши MD5 для больших файлов, не встречая ограничения памяти.

Заявление о выпуске Эта статья воспроизведена: 1729387820 Если есть какие -либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3