用初始值在Python中创建一个md5对象

8
我有一些需要对特定数据进行哈希的代码,然后在另一个进程中,使用更多数据继续哈希。
是否有一种方法可以创建一个对象,从md5或hashlib模块中,它具有不同于“d41d8cd98f00b204e9800998ecf8427e”的初始值?
我的意思是类似于:
x = md5.from_digest('0123456789abcdef')
x.update(new_data)

注意:不太理想的方法是保存原始的MD5对象并稍后恢复它,但据我所知,HASH对象无法进行pickle操作。

3
看起来答案是否定的:https://dev59.com/DGcs5IYBdhLWcg3ww2xP,以及相关问题:http://bugs.python.org/issue16059。 - Jon Clements
也许一个相当幼稚的解决方法是使用一个单独的进程,其唯一的工作就是接收数据、摘要和无限期等待进一步的更新/摘要请求... - Jon Clements
@JonClements 谢谢提供的链接!在发帖之前,我看了几十个问题,但没找到答案。 阅读md5的维基文章后,我不明白维护者为什么关闭了这个问题,因为他们所说的“状态”似乎是将摘要本身分成4部分。 工作进程解决方案对我无效,因为初始摘要在不同的环境中移动。 - itai
1
@itai 获取和设置内部状态的问题在于,在使用MD5的各种实现(例如来自OpenSSL)中,据该维护者所知,内部状态根本无法访问。换句话说,除非你拆掉哈希实现并编写自己的代码(这是一个非常糟糕的想法,而且也需要很多工作),否则你无法以任何方式影响内部状态,只能提供要进行哈希处理的数据。 - user395760
1个回答

1

我猜现在走出stdlib是唯一的解决方案。谢谢! - itai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接