序列化MD5计算状态并稍后恢复?

时间:2012-09-25 23:21:53

标签: python security hash md5

我想序列化/反序列化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上下文会很方便。

2 个答案:

答案 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提交一个。”所以我做到了。

http://bugs.python.org/issue16059