Skip to main content
 首页 » 编程设计

python之顺序 SHA 256 哈希为相同的输入提供不同的输出

2025年05月04日12qq78292959

我认为这将是一个相当普遍和直接的问题,但我进行了搜索但未能找到它。

我是一名 Python 新手,主要是自学成才。我正在尝试我认为相当简单的练习:从输入短语生成散列值。这是我的代码:

import hashlib 
target = input("Give me a phrase: ").encode('utf-8') 
hashed_target = hashlib.sha256(target) 
print(hashed_target) 

我执行这个并得到提示: 给我一个短语:

我输入了“Give me liberty or give me death!”这句话。并得到哈希输出0x7f8ed43d6a80。

为了测试,我再次尝试使用相同的短语,但得到了不同的输出:0x7f1cc23bca80。

我觉得这很奇怪,所以我复制了原始输入并将其粘贴进去,得到了第三个不同的哈希输出:0x7f358aabea80。

我相信一定有一个简单的解释。我没有收到任何错误,代码看起来很简单,但哈希值虽然相似,但绝对不同。

有人可以帮忙吗?

请您参考如下方法:

您正在直接打印一个对象,该对象返回 __repr__ 字符串中的内存地址。您需要使用 hexdigest 或 digest 方法来获取哈希:

>>> import hashlib 
>>> testing=hashlib.sha256(b"sha256 is much longer than 12 hex characters") 
>>> testing 
<sha256 HASH object @ 0x7f31c1c64670> 
>>> hashed_testing=testing.hexdigest() 
>>> hashed_testing 
'a0798cfd68c7463937acd7c08e5c157b7af29f3bbe9af3c30c9e62c10d388e80' 
>>>