Сериализовать состояние вычисления MD5 и возобновить его позже?

Я хочу сериализовать / deserialize контекст md5. Но я не знаю, как это сделать на Python. Псевдокод того, что я хочу делать.

import md5 # Start hash generation m = md5.new() m.update("Content") # Serialize m serialized_m = serialize(m) # In another function/machine, deserialize m # and continue hash generation m2 = deserialize(serialized_m) m2.update("More content") m2.digest() 

Для этого существуют библиотеки C ++. Есть ли для Python? Почему библиотека md5 не поддерживает его? Существуют ли проблемы безопасности? Благодарю.

  • Linux: вычислить один хэш для данной папки и содержимого?
  • Вычисление SHA-хэша со строкой + секретный ключ в python
  • Как заменить первичный ключ Django на другое целое, уникальное для этой таблицы
  • Ожидаемое количество хэш-коллизий
  • хэш-функция в python
  • Извлеките хэш SHA1 из файла torrent
  • Отредактировано: я хочу сделать это, потому что, например, HTTP-сервер хочет принимать потоковые данные в разных HTTP-запросах. Было бы удобно последовательно сериализовать контекст md5 между запросами.

  • Почему pip терпит неудачу с хешем md5 для пакета?
  • Типы, определяющие `__eq__`, не подлежат анализу?
  • Создание контрольной суммы MD5 файла
  • Как получить сумму MD5 строки?
  • Использование pickle.dumps для хеш-изменяемых объектов
  • Вычисление хеша md5 структуры данных
  • 2 Solutions collect form web for “Сериализовать состояние вычисления MD5 и возобновить его позже?”

    Я спросил г-на Гвидо В Россума. Он ответил, что «я не думаю, что есть способ, но это может сделать достойный запрос функции. Вы можете отправить его на bugs.python.org». Так я и сделал.

    http://bugs.python.org/issue16059

    Объекты HASH не сериализуемы: как сериализовать хэш-объекты в Python

    Предполагая, что вы можете передавать данные без выделения:

     from Crypto.Hash import MD5 # generate hash m = MD5.new() s = "foo" m.update(s) # serialize m serialized = s # deserialize and continue hash generation m2 = MD5.new(serialized) if m2.hexdigest() == m.hexdigest(): print "success" m2.update("bar") 
    Python - лучший язык программирования в мире.