比特币地址为什么不会输错
发布:中币网 时间:2015-04-04 00:00:00 加入收藏 打赏
BITCOIN ADDRESS VALIDATE
第一步,产生ECDSA私钥,如: 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 |
第二步,计算出ECDSA公钥, 0450863AD64A87AE8A2FE8….82BA6 |
第三步,对公钥进行SHA256运算 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408 |
第四步,对第三步结果进行RIPEMD-160运算 010966776006953D5567439E5E39F86A0D273BEE |
第五步,在第四步结果上加上版本号 00010966776006953D5567439E5E39F86A0D273BEE |
第六步,对第五步结果进行SHA256运算 445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094 |
第七步,对第六步结果进行SHA256运算 D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30 |
第八步,提出第七步结果的前四个字节 D61967F6 |
第九步,将第八步的结果加到第五步结果最后面 00010966776006953D5567439E5E39F86A0D273BEED61967F6 |
第十步,对第九步结果进行Base58编码 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM |
我们由上面的十个步骤可以看出。第八步中的四个字节是拿出来做checksum检查的。检查一个地址是否有效,我们只需要将第十步的结果做逆运算,去掉最后四个字节得到第四步的结果,然后做两次SHA256运算看看能否重新计算出的结果是否以这四个字节开头的HASH值就行了。 所以当你输入一个比特币地址的时候,Blockchain这样的在线钱包就会用上面的方法检查这个地址是否正确。当然,我们一般都是粘贴比特币地址,所以出错的可能性就更小了。Checksum也不是100%保证能够查出错误地址的,有人计算过,手工输入比特币地址能逃过检查的概率为三十二万分之一。 比特币地址检查代码为了更好的理解这一过程,下面提供一个用python写的比特币地址的检查程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from hashlib import sha256 digits58 = ’123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz’ def decode_base58(bc, length): def check_bc(bc): if __name__ == ‘__main__’: |
来源:
来源:中币网 https://www.zhongbi.net/news/jishu/1950.html 声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。