awilum.ru
Статьи Курсы Об авторе

Расчет MD5 хеша для больших файлов в Python

MD5 (Message Digest Algorithm 5) — это широко используемый криптографический хеш-алгоритм, который принимает входные данные и выдает фиксированную строку фиксированной длины, представляющую собой уникальную “отпечаток” этих данных. В Python MD5-хеши могут быть рассчитаны с использованием встроенного модуля hashlib.

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

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

import hashlib

def calculate_md5(file_path, block_size=65536):
    """
    Рассчитывает MD5 хеш файла в указанном пути.

    :param file_path: Путь к файлу.
    :param block_size: Размер блока для чтения файла (по умолчанию 64KB).
    :return: MD5 хеш файла.
    """
    md5_hash = hashlib.md5()  # Создаем объект MD5 хеша

    with open(file_path, "rb") as file:  # Открываем файл в бинарном режиме для чтения
        buffer = file.read(block_size)  # Читаем файл блоками
        while buffer:  # Пока блок не пустой (файл не закончился)
            md5_hash.update(buffer)  # Обновляем хеш с данными из текущего блока
            buffer = file.read(block_size)  # Читаем следующий блок

    return md5_hash.hexdigest()  # Возвращаем MD5 хеш в виде строки

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

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

Предположим, у нас есть файл example.txt, который содержит следующий текст:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sed nisi vel urna fermentum lacinia.

Мы можем рассчитать его MD5 хеш, используя функцию calculate_md5:

file_path = "example.txt"

md5_hash = calculate_md5(file_path)

print("MD5 хеш файла:", md5_hash)

После запуска этого кода мы получим MD5 хеш файла:

MD5 хеш файла: 240dc0a8be93aaa1b96ad3d1c9a04299

Этот MD5 хеш будет уникальным для содержимого файла example.txt.

Хотите стать востребованным Python разработчиком?
Присоединяйтесь к курсу Python Тренажер прямо сейчас!
Научитесь решать разнообразные практические задачи по программированию, которые помогут улучшить ваш уровень программирования на Python.
Не упустите шанс стать экспертом в мире разработки – начните свой путь прямо сейчас!
Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!