2017-01-09 61 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

什麼?!和不。抱歉。 –