顺序SHA 256哈希为同一输入提供不同的输出

1 python hash sha256 hashlib

我认为这将是一个相当普遍和直接的问题,但我搜索并无法找到它.

我是一名新手Python用户,大多是自学成才.我正在尝试我认为相当简单的练习:从输入短语生成哈希值.这是我的代码:

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

我执行此操作并获得提示:给我一个短语:

我输入了"给我自由或给我死亡!"这句话.并得到哈希输出0x7f8ed43d6a80.

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

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

我敢肯定必须有一个简单的解释.我没有收到任何错误,代码看起来很简单,但是哈希值虽然相似但肯定是不同的.

有人可以帮忙吗?

rle*_*827 10

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

>>> 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'
>>> 
Run Code Online (Sandbox Code Playgroud)