我正在尝试散列比特币私钥以获取校验和,并且python中的两个不同的库(hashlib + pycrypto)返回相同的错误结果(仅在1个散列之后)。
在linux终端中,我使用以下行获得正确的哈希结果:
echo -n 8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4 | xxd -r -p | sha256sum -b
result: cd358f378809b3043ded3782d849fbad70f92a2dadefafd985d9aef443752e57
但是,hashlib,pycrypto和在线SHA2哈希工具会返回值:
5d6dce0f36a50abe51ee435ac11dac05f7879c1cd1ca5bc7aae706e5a3776d4a
我不确定他们为什么会回归不同的价值观。
这是从它们生成的两个WIF密钥,最上面的一个使用命令行函数,第二个使用python;第二个无效(钱包软件不接受)。
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGtxZf2V
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGvDc8hm
答案 0 :(得分:2)
import hashlib
print(
hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4").hexdigest()
)
print(
hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4".decode("hex")).hexdigest()
)
注意区别:
第一个代码散列十六进制字符串。
第二个哈希值由十六进制解码返回的字节串。