我正在尝试找到一种方法,该方法可基于另一个hashlib对象的摘要输出来更新hashlib对象。这听起来令人困惑,但本质上是:
import hashlib
part1 = b'abcdefg'
part2 = b'hijklmnop'
# Normal way
hasher1 = hashlib.sha256()
hasher1.update(part1)
hasher1.update(part2)
# Way I need to do it (different hashlib objects)
hasher2 = hashlib.sha256()
hasher2.update(part1)
hasher3 = hashlib.sha256(hasher2.digest())
hasher3.update(part2)
print(hasher1.digest() == hasher3.digest()) # False, but I wish it was True
我曾希望这两个返回相同的摘要,但事实并非如此。关于如何使用新的hashlib对象“继续”哈希的任何想法?
编辑: 我的问题不清楚,抱歉。我需要能够计算一台计算机上消息块上的哈希,然后将结果哈希发送到第二台计算机,并使用第二个消息块在第二台计算机上“继续”哈希。因此流程如下:
hasher2 = hashlib.sha256()
hasher2.update(part1)
intermediate_result = hasher2.digest()
### send intermediate result over some sort of connection ###
hasher3 = hashlib.sha256(intermediate_result)
hasher3.update(part2)
final_result = hasher3.digest()
因此,由于这部分位于两个软件程序之间的中间位置,因此我无法使用.copy()
方法。