2017-01-09 52 views
0

我想在Python中实现以下步骤:hashlib.sha256产量意外的结果

Compressed public key: 
02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86 

SHA-256 of public key yields: 
cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330 

这一步是相当简单的,所以我写了这段代码,看看它是否工作按计划进行:

from binascii import hexlify 
from hashlib import sha256 
master_key = hexlify("02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86") 
print(sha256(master_key).hexdigest()) 

但是,这不会产生预期的结果。相反,它给了我:

cee4b5650664b11623675d0371ab9dd1e3478758a95b189e54ecf8b7bdd7ba2d 

使用不使用十六进制编码的字符串它首先不会产生正确的结果。有任何想法吗?

+1

使用了'hexlify()'的关键十六进制的十六进制表示形式转换。它已经在十六进制。你可能想使用'unhexlify()'。 – kindall

回答

2

unhexlify您的十六进制表示:

from binascii import unhexlify 
from hashlib import sha256 
master_key = unhexlify("02F840A04114081690223B7069071A70D6DABB891763B638CC20C7EC3BD58E6C86") 
print(sha256(master_key).hexdigest()) 
# cb05d0fd5e76ba8ea88323fc5d3eefd09a78d8e2a5fd4955307b549657a31330 
+0

这就是当你不知道十六进制实际看起来像什么时会发生什么。谢谢! 你有没有机会参加ArmA 2社区? – FreakJoe

+0

什么?!和不。抱歉。 –