《Mastering Bitcoin》中的错误代码可能会导致你的比特币丢失

《Mastering Bitcoin》中的错误代码可能会导致你的比特币丢失

黑客接单访客2021-10-11 18:54:003302A+A-

著名的《Mastering Bitcoin》(《精通比特币》)一书中有段Python代码有误(key-to-address-ecc-example.py),这段代码被广为流传。这个错误有极高的概率会根据一个正确的私钥生成一个错误的压缩公钥,从而产生一个错误的比特币收款地址,如果使用这个地址会导致比特币资金丢失。这段有BUG的代码从此书中的第一版中就已存在,最新的第二版本依旧存在这个BUG代码,当然,广为流传的中译版本中也自然存在。 下面是那段错误的代码及其修正:https://github.com/bitcoinbook/bitcoinbook/pull/483/files

BUG的产生是encode函数没有保留前导字符零所致,下面是BUG演示,可见丢失了一个前导零的公钥产生了一个错误的比特币地址:

这其实并不是encode函数的错,一个正常的未添加前缀字符(”02″或”03″)的压缩公钥长度应该是32字节(64个字符),encode函数会将10进制公钥转换成16进制字符串的形式,一旦当转换后的字符串长度不足64个字符的时候(极有可能出现的情况),encode函数并不会自动添加前导字符零以确保压缩公钥的长度为64个字符。zfill(64)的作用就是确保公钥为64个字符,不足的话进行补零。 以上演示数据可通过著名的比特币在线地址生成器进行查验:https://www.bitaddress.org

现已推送了一个合并请求(Pull Request)并提供了一段重现此BUG的代码,详细信息: https://github.com/bitcoinbook/bitcoinbook/pull/483

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 2条评论
  • 辞眸辞忧2022-06-05 02:39:04
  • 著名的《Mastering Bitcoin》(《精通比特币》)一书中有段Python代码有误(key-to-address-ecc-example.py),这段代码被广为流传。这个错误有极高的概率会根据一个正确的私钥生成一个错误的压缩公钥,从而产生
  • 末屿千纥2022-06-05 10:42:53
  • 址会导致比特币资金丢失。这段有BUG的代码从此书中的第一版中就已存在,最新的第二版本依旧存在这个BUG代码,当然,广为流传的中译版本中也自然存在。 下面是那段错误的代码及其修正:https://github.com/bitcoinbook/bitcoinbook/pull/483/fil

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理