Sha256返回错误的哈希值?

时间:2016-06-10 22:52:57

标签: python linux bitcoin

我正在尝试散列比特币私钥以获取校验和,并且python中的两个不同的库(hashlib + pycrypto)返回相同的错误结果(仅在1个散列之后)。

在linux终端中,我使用以下行获得正确的哈希结果:

echo -n 8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4 | xxd -r -p | sha256sum -b
result: cd358f378809b3043ded3782d849fbad70f92a2dadefafd985d9aef443752e57

但是,hashlib,pycrypto和在线SHA2哈希工具会返回值:

5d6dce0f36a50abe51ee435ac11dac05f7879c1cd1ca5bc7aae706e5a3776d4a

我不确定他们为什么会回归不同的价值观。

这是从它们生成的两个WIF密钥,最上面的一个使用命令行函数,第二个使用python;第二个无效(钱包软件不接受)。

5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGtxZf2V
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGvDc8hm

1 个答案:

答案 0 :(得分:2)

import hashlib

print(
    hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4").hexdigest()
)

print(
    hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4".decode("hex")).hexdigest()
)

注意区别:

第一个代码散列十六进制字符串。

第二个哈希值由十六进制解码返回的字节串。