为什么每次在hashlib中调用hexdigest()时都会得到不同的哈希值?

2024-10-01 09:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在python中对同一个字符串有一个唯一的散列。我使用以下代码获取哈希值:

import hashlib
mysha1 = hashlib.sha1()
mysha1.update("my_url")
print mysha1.hexdigest()
mysha1.update("my_url")
print mysha1.hexdigest() # which is generating a different hash

我错过了什么吗?在


Tags: 字符串代码importurlwhichismyupdate
3条回答

update()函数提供要连接的字符串。在

https://docs.python.org/2/library/hashlib.html

>>> import hashlib
>>> mysha1 = hashlib.sha1()
>>> mysha1.update("my_url")
>>> print mysha1.hexdigest()
ebde90b9f0c047ff9f86bec3b71afe5d00594030
>>> mysha1.update("my_url")
>>> print mysha1.hexdigest()
efa6ba48cedd0da886a553ad0e7c131ec79b452e
>>> 
>>> 
>>> sha = hashlib.sha1()
>>> sha.update("my_urlmy_url")
>>> print sha.hexdigest()
efa6ba48cedd0da886a553ad0e7c131ec79b452e

请不要多次调用update,例如:

>>> import hashlib
>>> mysha1 = hashlib.sha1()
>>> mysha1.update("my_url")
>>> mysha1.hexdigest()
'ebde90b9f0c047ff9f86bec3b71afe5d00594030'
>>> mysha1.hexdigest()
'ebde90b9f0c047ff9f86bec3b71afe5d00594030'

当您调用update("my_url")时,concatenating就是哈希输入的那个字符串。在

You can now feed this object with arbitrary strings using the update() method. At any point you can ask it for the digest of the concatenation of the strings fed to it so far using the digest() or hexdigest() methods.

每次需要新的哈希值时,都需要生成一个新的sha1对象。在

相关问题 更多 >