我想序列化/反序列化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库不支持它?有安全问题吗?感谢。
编辑: 我想这样做是因为例如,HTTP服务器想要接受不同HTTP请求中的流数据。在请求之间以某种方式序列化md5上下文会很方便。
答案 0 :(得分:1)
HASH对象不可序列化:How to serialize hash objects in 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")
答案 1 :(得分:1)
我问过Guido V Rossum先生。他回答说“我认为没有办法。但是它可能会提供一个不错的功能请求。你可以向bugs.python.org提交一个。”所以我做到了。