0

我试图了解加密算法 RIPEMD 和 SHA256 的工作原理。计算PKHash的比特币方法是RIPEMD160(SHA256(PublicKey))。

我正在尝试首先实现 SHA256(PublicKey) 的 RIPEMD。

pkHashStep1=hashlib.sha256(public_key.decode('hex')).digest()
print 'MyTransaction pkHashStep1 {}'.format(pkHashStep1)

MyTransaction pkHashStep1 ▒▒▒so▒/▒▒e▒▒▒¡▒7▒?9▒▒.▒ӟ!n▒h

这会输出一个我不能直接使用的字符串,但是 hashlib 库可以使用它。尝试 pkHashStep1.decode('hex') 和 bin(pkHashStep1) 会引发错误。它如何将哈希转换为可用的十六进制字符串/bin?

目前,我将 publicKey 作为 RipeMD 方法的输入,而不是 pkHashStep1,并且必须单独执行

input=hashlib.sha256(publicKey.decode('hex')).hexdigest()

仅供参考:我知道 hashlib 中有一个成熟的方法。建议我使用它不是答案 https://stackoverflow.com/a/2124289/4219479

4

1 回答 1

0

glibdud 的评论让我得到了答案。

hashlib.sha256(public_key.decode('hex')).digest().encode('hex')=
hashlib.sha256(public_key.decode('hex')).hexdigest()
于 2017-02-15T03:38:13.380 回答