【问题标题】:Creating an md5 object in python with an initial value [duplicate]在python中创建一个具有初始值的md5对象[重复]
【发布时间】:2014-01-03 23:33:40
【问题描述】:

我有一些代码需要对某些数据进行哈希处理,然后在另一个进程中继续使用更多数据进行哈希处理。

有没有办法从 md5 或 hashlib 模块创建一个对象,它的初始值与 'd41d8cd98f00b204e9800998ecf8427e' 不同? 我的意思是类似于:

x = md5.from_digest('0123456789abcdef')
x.update(new_data)

注意:不太理想的方法是保存原始 md5 对象并在以后恢复它,但是 afaik HASH 对象是不可腌制的。

【问题讨论】:

  • 看起来答案是否定的:stackoverflow.com/questions/12592501/… 和相关问题:bugs.python.org/issue16059
  • 也许一个相当幼稚的解决方法是一个单独的进程,其唯一的工作就是对数据进行消化,并无限期地接收进一步的更新/消化请求......
  • @JonClements 感谢您的链接!我在发布之前查看了几十个问题,但找不到。阅读 md5 的 wiki 文章,我无法理解维护人员关闭问题的原因,因为他们谈论的“状态”似乎是摘要本身分为 4 个部分。工作进程解决方案对我不起作用,因为初始摘要在不同的环境中移动..
  • @itai 获取和设置内部状态的问题在于,在使用 MD5 的各种实现中(例如来自 OpenSSL),内部状态根本无法访问,因为据维护者所知。换句话说,除非您删除哈希实现并编写自己的(非常糟糕的想法和大量工作),否则您不能影响内部状态,除非将数据提供给它散列。

标签: python md5


【解决方案1】:

他们(@jon-clements、@itai、@delnan)是对的。直到现在,你不能,除非你实施一个。有一些例子: http://equi4.com/md5/pymd5.py http://rosettacode.org/wiki/MD5/Implementation

【讨论】:

  • 我猜想跳出标准库是目前唯一的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2015-04-02
  • 2010-09-23
  • 2017-11-30
  • 1970-01-01
相关资源
最近更新 更多