10

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

4

2 回答 2

1

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")
于 2012-09-26T02:05:36.307 回答
1

我问了 Guido V Rossum 先生。他回答说:“我认为没有办法。但是它可能会提出一个不错的功能请求。你可以向 bugs.python.org 提交一个。” 所以我做了。

http://bugs.python.org/issue16059

于 2012-09-27T17:00:54.830 回答