3

当我尝试使用哈希函数时,似乎更新方法不会覆盖字符串:

例如,给定一个字符串杂志

hasher = hashlib.sha256() #set the hasher

hasher.update(magazine.encode('utf-8'))
print( int( hasher.hexdigest(), 16 ) % 10**8)

hasher.update(magazine.encode('utf-8'))
print( int( hasher.hexdigest(), 16 ) % 10**8)

将打印 73983538 65808855

hasher = hashlib.sha256()
hasher.update(magazine.encode('utf-8'))
print( int( hasher.hexdigest(), 16 ) % 10**8)

hasher = hashlib.sha256() #reset the hasher
hasher.update(magazine.encode('utf-8'))
print( int( hasher.hexdigest(), 16 ) % 10**8)

将打印
73983538 73983538

更新函数到底是什么,有没有办法在不创建新哈希的情况下重置字符串?

非常感谢,

4

1 回答 1

0

你为什么不想创建一个新的哈希器?一个散列器代表一个“事物”的散列,存在更新方法,这样您就可以散列大量数据(每次一些字节数)。即两者

hasher = hashlib.sha256()
hasher.update(b"foo")
hasher.update(b"bar")

hasher = hashlib.sha256()
hasher.update(b"foobar")

导致相同的哈希。

没有办法重置哈希对象的状态,因为状态甚至不能(直接)通过 Python 访问(因为它是用 C 编写的)。

于 2018-12-11T12:14:25.420 回答