测算:比特币地址碰撞概率

当前位置:首页 > 币圈百科 > 测算:比特币地址碰撞概率

测算:比特币地址碰撞概率

2023-01-17币圈百科241
关于比特币地址的碰撞概率,似乎没有特别详细的说法。其实这是一个很重要的问题。因为这直接影响到公众对比特币安全性的信心。碰撞概率的严格计算需要考虑的因素太多,公式也比较复杂。所以下面的分析只是在数量级上,做一个简单的逻辑计算和比较。u=1278112832,4057677539&fm=15&gp=0不准确,仅供娱乐。先把结论给不想看过程的朋友:结论一:与特定比特币地址碰撞的概率假设,你掌握了10倍于当前比特币的计算能力,不间断地与特定比特币地址碰撞用了136年。碰撞成功的概率相当于买彩票双色球333103亿次和500万次。(注意单位是1亿)结论二:与任意货币地址碰撞的概率(生日攻击)假设你掌握了10次比特币目前的计算能力,用了136年的时间与所有货币存款地址连续碰撞。其中任何一个地址发生碰撞的概率相当于1000次买500万福彩双色球。(注意这些地址中超过50%的地址小于0.001BTC)我来看看这两个结论的推导过程。当然,在推导之前,首先要把比特币地址研究透彻。比特币地址不是公钥的说法可能会让许多人感到惊讶。其实严谨的说法应该是:

比特币地址是带验证的公钥摘要。

我们来看看比特币地址的生成过程。比特币地址的生成过程(注:有些数字以“0x”开头,表示这个数字是用十六进制表示的。“0x”本身没有任何意义。这是从C语言流传下来的蓑衣网小编2022传统写法。例如,0xA是十进制10。另外,1字节=8位二进制=2位十六进制)。第一步,随机选取一个32字节的数,大小为1 ~0x fffffffffffffffffffe baa edce 6 af 48 a 03 bbfd 2 5e8c d 036 4141作为私钥。

18E14A,7B6A,307F426A,94f 8114701 e 7 c8e 774 e 7 f 9 a 47 e2c 2035 b29 a 206321725

第二步,利用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥对应的非压缩公钥。(共65个字节,1个字节为004,32个字节为X坐标,32个字节为Y坐标)公钥压缩与不压缩的问题另文说明。0450863 ad 64 a 87 AE 8 a2 Fe 83 C1 a f1 a 8403 CB 53 f 53 e 486d 8511 dad 8 a 0487 e5b 23522 CD 470243453 a 299 fa 9e 7237716103 ab 11 ADF 38855 ed 6 F2 ee 187 e 9 c 582 ba 6第三步,计算公钥的SHA-256的哈希值

600 FFE 422 B4 e 00731 a 5951计算RIPEMD-160的hash值[X]010966776006953d 5567439 e 5e 39 f 86 a0d 273 bee[X]第五步,取上一步的结果。添加地址版本号(比特币主网版本号“000”)[X]0001096676006953d 5567439 e 5e 39 f 86 a0d 273 bee[X]第六步,取上一步的结果。计算SHA-256的哈希值[X]445 C7 a 8007 a 93d 8733188288 bb 320 a 8 Fe 2 debd 2 AE 1 b 47 f 0 f 50 BC 10 BAE 845 c 094[X]第七蓑衣网小编2022步,取上一步的结果。再次计算SHA-256的哈希值(哈哈)[X] D61967F63 c 7 DD 183914 a 4 AE 452 c 9 F6 ad 5d 462 ce 3d 277798075 b 107615 C1 A8 a 30[X]第8步,取上一个结果的前4个字节(8位十六进制)[X]d 61967 f 6。

0001096676006953d 5567439 e 5e 39 f 86 a0d 273 beed 61967 f 6

第十步,用base58记数法变换地址(这是最常见的比特币地址形式)。

16 uwll 9 RISC 3 qfpqbuvkofhmbq 7 wmt JVM

base58简单介绍一下base 58。Base58实际上是一种58位符号。Base58编码表:实际值编码值编码值编码值编码值编码值编码值编码值编码值编码值编码值编码值编码值0116h 32 z 48 q 1217j 33a 49 r 2318k 34 b 50s 3419 l 35 c 51t 4520m 36521n 37 e 53v 6722 p 38 w 7823 q 39g 558924 r 40h 56 a 2541 I。2j 11 c 27 u 43k 12d 28 v44 m 13 e 29 w 45n 14 f 30 x 46 o 15g 31y 47 p为例,十进制“58”在十六进制中表示3A,“20”表示base58(因为1是0,2是1),十进制“68”表示Base58。为什么要用这种奇怪的编码?(从事编程的同学要注意,比特币使用的base58和常用的Base58的字典顺序是有区别的。 )引用中本聪在源代码base58.h中的评论:为什么是base-58而不是标准的base-64编码?为什么要用base58而不是base-64?不希望0个石油字符在某些字体中看起来相同,并可用于创建视觉上可识别的帐户号码。我不想要0,O,I,l这几个字母,因为这些字母很容易混在很多字体里。而且改装后看起来比以前舒服多了。包含非字母数字字符的字符串不像帐号那样容易被接受。大家都很容易理解。如果没有标点符号,电子邮件通常不会换行。如果没有标点符号,电子邮件一般不会换行。如果全部按字母顺序排列,双击会将整个数字选择为一个单词。双击选择整个字符串,哦耶。椭圆曲线加密算法,SHA-256哈希算法,RIPEMD-160哈希算法的原理不是一两句话能说清楚的,我先忽略了。以后写一篇关于它的文章(不要打我)。仅供使用:椭圆曲线加密算法:取任意随机数作为私钥,生成公钥形成密码对。私钥是保密的,公钥是公开的。由私钥签名的信息可以由公钥验证。签名不能伪造。SHA-256哈希算法:任意大小的数据被特定的算法混淆,生成一个长度为256位的数作为原始数据的汇总信息。RIPEMD-160哈希算法:将任意大小的数据用特定的算法混淆后,生成一个160位的二进制长度数,作为原始数据的汇总信息。(可以向前检查,但不能向后检查)没有公钥也能找到地址。我们可以得出以下结论。只有比特币地址,无法推导出公钥。合法的比特币地址不一定有对应的公钥。

比如这个:

111111111111111114 olvt 2

它是这样构造的:

00(版本号)00000000000000000000000000000000000000000(任意20)。真的有人往这个地址寄钱(大概3个硬币,相当于被销毁了)。看这里:区块链https://号。info/address/11111111111111114 olvt 2

比特币地址碰撞地址的由来已经很清楚了,下面我们来分析一下如何碰撞。以全零地址:“111111111111111111111114 olvt 2”为例。只是随机撞出这个地址对应的公钥是没有意义的。因为比特币交易需要私钥签名才有效。所以要想在这个地址使用比特币,前提是要有这个地址对应的公钥的私钥。换句话说,您需要:随机生成一个私钥。计算对应于私钥的公钥。使用公钥计算比特币地址。与目标地址进行比较,看是否一致。如果没有,请返回步骤1。根据比特币地址的理论总数,很容易看出单次碰撞成功的理论概率是

1/(2 ^ 160)?//“2 160”表示2的160次方

因为每次碰撞至少需要3次SHA-256运算,所以我们将其放宽到2次。在不考虑其他运算的情况下,假设你有1E/秒的计算能力(E=2^60相当于目前比特币网络计算能力的10倍)来破解。那么,每秒钟与这个地址碰撞成功的概率:(1/(2 ^ 160))*(2 ^ 60)/2=1/(2 ^ 101)假设你能活2 ^ 32秒=4294967296秒 136.2年,你有生之年与这个地址碰撞成功的概率是:(1/)我们来看看双色球命中500万的概率:

1/C(33,6) * 16=1/[(33 * 32 * 31碰撞成功的概率相当于买彩票双色球333103亿次和500万次。(注意单位是1亿)考虑到生日攻击,目前有300万左右的地址有钱。看这里:http://btc.ondn.net/search,让我们把这个数字翻一万倍。 假设有343亿个地址有比特币(2.35343亿,相当于地球上每个人有5个地址有余额,不包括火星人的。呵呵)那么命中任意一个地址的概率是:(1/(2 69))*(2 35)=1/2 34=1/17179869184,与500万相比:(1/17721088)/(1/17179869184)。所以结论是:假设你掌握了10倍于目前全网比特币的计算能力,花了136年时间不间断地撞见所有存款地址。其中任何一个地址发生碰撞的概率相当于1000次买500万福彩双色球。(注意这些地址中超过50%的地址BTC小于0.001)?后记以上计算有很多疏漏,计算中考虑了最宽松的情况。所以实际概率更小。比特币系统的设计让有计算能力的人倾向于计算区块链,因为这比碰撞地址划算得多。本文的计算有错误和遗漏。请指正。但如果你纠正我,我就不用改了。(开玩笑,别打我。)没中过1000次,中过500万的同学,不会幻想去计算别人的地址。我们玩骰子吧…洗洗睡吧。如果你喜欢《比特币地址碰撞概率》请捐赠:122222 o 5 a 3k 6d 7 wl 5 mabbpuvkutzjhmk 4参考:3359en.bitcoin.it/wiki/technical _ background _ of _比特币_地址3359en.bitcoin.it/wiki/base 58 check _ encoding http://proc bits . com/2013/08/27/generating-a-bitcoin-address-with-JavaScript https://bitcointalk . org/index . PHP?topic=41718.03359en.bitcoin.it/wiki/list地址前缀https://en.bitcoin.it/wiki/wallet导入格式3359en.bitcoin.it/wiki/private密钥

——-
测算:比特币地址碰撞概率 | 分享给朋友: