计算丢失的比特币私钥上的校验和比特币

时间:2017-12-18 15:32:08

标签: python c cryptography public-key-encryption bitcoin

这是我的故事: 几年前,我将比特币私钥分开,以便在不同的地方保持安全。我失去了一部分,认为我永远失去了我的开采比特币。

突然(我想你理解为什么)我决定开始搜索任何部分,我发现了3个中的6个!!!!

所以现在我有了开始(让我们说“5Lagt”)和结束(“Bh3u2YHU2ntQAFTruAYGhJ1xacPJXr3l6k”)所以我需要在它们之间找到10个alfanumeric字符。

我对编程很陌生,但在大学的Python和C中有一些基础知识。

我已经读过WIF压缩私钥中的最后一个符号是校验和。

因此我在伪代码中理解我需要做以下事情

  • 将私钥解码为十六进制格式(此08 + .......... +校验和)
  • 排除08和校验和
  • 生成丢失的部分(以某种方式对其进行编码或解码?)
  • 比较第一个字节(什么字节?)和校验和

我从理论上理解但实际上并不理解。 如果我拿回来的话,我很乐意把10%的比特币放在钱包上!

1 个答案:

答案 0 :(得分:0)

采用校验和检查的快速草图,希望它能引导你朝着正确的方向前进:

import base58
import hashlib

def check_wif(wif):
    """WIF checksum checking.
    Install base58 before use: `pip install base58`

    >>> check_wif('5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ')
    True
    """
    try:
        wif_bytes = base58.b58decode(wif)
        if wif_bytes[0] != 128:
            return False
        wif_bytes_no_chksum, chksum = wif_bytes[:-4], wif_bytes[-4:]
        wif_bytes_sha256_1 = hashlib.sha256(wif_bytes_no_chksum)
        wif_bytes_sha256_2 = hashlib.sha256(wif_bytes_sha256_1.digest())
        if wif_bytes_sha256_2.digest()[:4] == chksum:
            return True
        else:
            return False
    except ValueError:
        return False

一般情况下,python对于那种任务来说太慢了。正如我所知道的那样。