我正在尝试散列比特币私钥以获得校验和,python 中的两个不同库(hashlib + pycrypto)返回相同的错误结果(仅经过 1 个散列)。
在 linux 终端中,我得到了正确的散列结果:
echo -n 8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4 | xxd -r -p | sha256sum -b
result: cd358f378809b3043ded3782d849fbad70f92a2dadefafd985d9aef443752e57
但是,hashlib、pycrypto 和在线 SHA2 哈希工具返回值:
5d6dce0f36a50abe51ee435ac11dac05f7879c1cd1ca5bc7aae706e5a3776d4a
我不确定他们为什么返回不同的值。
这是从它们生成的两个 WIF key ,第一个使用命令行函数,第二个使用 python;第二个无效(不被钱包软件接受)。
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGtxZf2V
5J19pGYtJzuS7VoAQjxDjUGgWXSNqj18GWSWvFVqJzQqGvDc8hm
最佳答案
import hashlib
print(
hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4").hexdigest()
)
print(
hashlib.sha256("8018ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4".decode("hex")).hexdigest()
)
注意区别:
第一个代码对十六进制字符串进行哈希处理。
第二个哈希由十六进制解码返回的字节字符串。
关于python - Sha256 返回不正确的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758167/