Python中的双哈希SHA256

时间:2014-12-25 01:52:26

标签: python hash bitcoin sha256

我试图重现以下内容:

=========================================  来自比特币Wiki的

交易难题

交易'...'是一个有趣的难题。

given hash = 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000

要花费该事务,您需要提供一些数据,以便对数据进行两次哈希导致给定的哈希值。所需数据恰好是Genesis块,给定的哈希是创世块哈希

==========================================

genesis ='000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'

以下函数双重输入(适用于this example中的步骤14)

def function(input):
    data = input.decode('hex_codec')
    result = binascii.hexlify(hashlib.sha256(hashlib.sha256(data).digest()).digest())
    print result

但输入genesis哈希值会产生以下结果:

字符串: “ae253ca2a54debcac7ecf414f6734f48c56421a08bb59182ff9f39a6fffdb588”

己烷: “61 65 32 35 33 63 61 32 61 35 34 64 65 34 63 61 63 37 65 63 66 34 31 34 66 36 37 33 34 66 34 38 63 35 36 34 32 31 61 30 38 62 62 35 39 31 38 32 66 66 39 66 33 39 61 36 66 66 66 64 62 35 38 38 0d 0a“

我显然做错了什么但似乎无法弄清楚是什么。


答案:如Falsaltru所述;

之前使用了所需的哈希来计算blockhash,因此哈希本身为什么“不难找到”。

1 个答案:

答案 0 :(得分:1)

您可以通过反转genesis(字节):

来获取给定的哈希值
>>> import binascii                                                                             
>>> genesis = '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
>>> given_hash = '6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000'
>>> binascii.unhexlify(given_hash) == binascii.unhexlify(genesis)[::-1]
True