如何解决Hashlib 库中的 Sha512 散列在每次代码运行时产生不同的结果
我正在尝试创建一个可以散列密码的系统,然后我可以存储散列并将散列与输入的密码进行比较。问题是,每当我运行这段代码时,它产生的哈希值在相同的输入下是不同的。我发现代码在同一次运行中每次执行都会产生相同的输出,但在运行之间并不一致。
代码:
import hashlib
def Sha512Hash(Password):
HashedPassword=hashlib.sha512(Password.encode('utf-8'))
print(HashedPassword)
Sha512Hash('Hi')
Sha512Hash('Hi')
解决方法
您好,您很可能误解了输出。
我保存了你的脚本并用 python2 和 python3 调用了它。 Python3 重用了对象(或它的地址),但 python2 创建了新对象。
python2 x.py
<sha512 HASH object @ 0x7f47a870bc30>
<sha512 HASH object @ 0x7f47a870bc00>
python3 x.py
<sha512 _hashlib.HASH object @ 0x7fb842d51bb0>
<sha512 _hashlib.HASH object @ 0x7fb842d51bb0>
在 @
之后是内存地址。但是,如果您更改脚本,则它会打印 hexdigest(以十六进制表示)。您将能够看到它按预期工作。
def Sha512Hash(Password):
HashedPassword = hashlib.sha512(Password.encode('utf-8'))
print(HashedPassword)
print(HashedPassword.hexdigest())
调用更改的脚本:
python2 x.py
<sha512 HASH object @ 0x7f2bbe8dbc30>
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
<sha512 HASH object @ 0x7f2bbe8dbc00>
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
python3 x.py
<sha512 _hashlib.HASH object @ 0x7f41df832bb0>
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
<sha512 _hashlib.HASH object @ 0x7f41df832bb0>
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
,
试试这个代码:
import hashlib
def Sha512Hash(Password):
HashedPassword=hashlib.sha512(Password.encode('utf-8')).hexdigest()
print(HashedPassword)
Sha512Hash('Hi')
Sha512Hash('Hi')
你的输出会是这样的,没有任何问题
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
45ca55ccaa72b98b86c697fdf73fd364d4815a586f76cd326f1785bb816ff7f1f88b46fb8448b19356ee788eb7d300b9392709a289428070b5810d9b5c2d440d
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。