如何使用python中的现有hasher更新hashlib.md5 hasher?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用python中的现有hasher更新hashlib.md5 hasher?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2091字,纯文字阅读大概需要3分钟。
内容图文
![如何使用python中的现有hasher更新hashlib.md5 hasher?](/upload/InfoBanner/zyjiaocheng/794/cc9e7301e2de4ebda7ebe93adc10d852.jpg)
我有缓存的缓存实例:
m1 = hashlib.md5()
m1.update(b'very-very-long-data')
cached_sum = m1
我想用以前缓存的总和来更新外部哈希:
def append_cached_hash(external_hasher):
# something like this
external_hasher.update(cached_sum)
不幸的是,它不起作用,因为update()需要字节.我可以再次传递相同的“非常非常长的数据”字节,但它拒绝为常见的长数据对象预缓存md5和的整个想法.
我可以做类似以下的事情:
external_hasher.update(cached_sum.hexdigest())
但是,它不会产生与以下相同的结果:
external_hasher.update(b'very-very-long-data')
我怎么能实现上面的功能?
同样的问题可以用不同的方式表达.有3个大数据集,有必要使用python为所有可能的组合计算md5总和.允许为每个数据源计算一次md5.
m1 = hashlib.md5(b'very-big-data-1')
m2 = hashlib.md5(b'very-big-data-2')
m3 = hashlib.md5(b'very-big-data-3')
我应该在以下打印功能的第二个参数中写什么来实现目标?
print("sum for data 1 and data 2 is:", m1.update(m2))
print("sum for data 1 and data 3 is:", m1.update(m3))
print("sum for data 2 and data 3 is:", m2.update(m3))
print("sum for data 1, data 2 and data 3 is:", m1.update(m2.update(m3)))
在此先感谢您的帮助!
解决方法:
散列函数是单向函数,它使用可变长度的字节序列并产生固定长度的序列,即散列.所以hashlib实现与此一致,并没有提供一种拉出输入序列的方法,至少不是一个明确的方法.
IMO从OOP的角度来看也是有道理的,因为这样的哈希对象代表一个哈希,所以它可以在它的位置使用并传递而没有未经授权的代码能够读取原始输入.不确定hashlib对象是否真的那么安全.
因此,要计算所需的所有组合,以保持数据集可用并直接使用它们.您可以使用hash.copy方法重用部分哈希结果,如文档中所建议的那样:
hash.copy()
Return a copy (“clone”) of the hash object. This can be used to efficiently compute the digests of strings that share a common initial substring.
import hashlib
d1 = 'data-1'
d2 = 'data-2'
d3 = 'data-3'
h1 = hashlib.md5(d1)
# instead of hashlib.md5(d1).update(d2), or hashlib.md5(d1 + d2)
h12 = h1.copy()
h12.update(d2)
# instead of hashlib.md5(d1).update(d3), or hashlib.md5(d1 + d3)
h13 = h1.copy()
h13.update(d3)
h2 = hashlib.md5(d2)
# instead of hashlib.md5(d2).update(d1), or hashlib.md5(d2 + d1)
h21 = h2.copy()
h21.update(d1)
# ...
那些散列部分哈希值的哈希会对你有用吗?
内容总结
以上是互联网集市为您收集整理的如何使用python中的现有hasher更新hashlib.md5 hasher?全部内容,希望文章能够帮你解决如何使用python中的现有hasher更新hashlib.md5 hasher?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。