【发布时间】:2017-02-14 15:16:44
【问题描述】:
我正在尝试了解加密算法 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) 会引发错误。它如何将哈希转换为可用的 hexstring/bin??
目前,我将 publicKey 作为 RipeMD 方法的输入,而不是 pkHashStep1,并且必须单独执行
input=hashlib.sha256(publicKey.decode('hex')).hexdigest()
仅供参考:我知道 hashlib 中有一个成熟的方法。建议我使用它不是答案 https://stackoverflow.com/a/2124289/4219479
【问题讨论】:
-
如果您只是询问如何将字节字符串转换为十六进制字符串,请参阅例如this question。它被要求用于 Python 3,但也适用于 2。