美文网首页简书优秀文章区块链研习社区块链研究
【区块链启蒙7#】碰撞:中奖的概率

【区块链启蒙7#】碰撞:中奖的概率

作者: 62e2127aa6f5 | 来源:发表于2018-05-06 20:15 被阅读23次

00 前言

本系列将以100个区块链知识为基石,循序渐进,娓娓道来,为零基础人士搭建一座区块链认知大厦。

如果有可能,未来会集结成书。(求区块链插画师

当然,愿意的话,您可以转发给身边的亲人朋友,帮助他们早日启蒙,享受区块链认知红利。

7.1 碰撞

前文所提到的哈希值和密钥,都表现为随机数的特征。

而随机数的特征是:只要随机数足够长,是永远不会重复的。

以SHA-256哈希值为例,不同文件所产生的哈希值确实是不会重复的。

你说我不信,我偏要试试。

那你就试好了。就算是把地球上所有的电脑文件试一遍,都不会重复的!

如果真能试出来,那叫撞大运,在密码学中叫碰撞成功!

历史上,还真有碰撞成功的事情!

不过那是以前的加密算法,比较老了,比如曾经著名的SHA-1。

目前主流的SHA-256也就是比特币使用的哈希算法,至少在可见的未来是不可能被碰撞出来的。

为什么?

除了算法的改进,重要的原因是它足够长。

7.2 大有多大?

你说既然是随机数,那从理论上来讲,是有可能碰撞成功的。

对的,关键是可能性有多大?

抛1个硬币,正面向上的概率是50%,因为有2个可能,就是2的1次方。

同时抛2个硬币,正面向上的概率是25%,因为有4个可能,就是2的2次方。

你同时抛256个硬币试试,有多少个可能?就是2的256次方。

这个数有多大呢?

答案是:1后面有77个0!读作10万亿亿亿亿亿亿亿亿亿!

这个硬币如果让上帝来抛,他老人家都保证不了两次是重复的,哪怕到天荒地老。

这个数字到底有多大呢?可能我们还是缺乏一个直观的感受。

下面举两个例子。

一粒沙子平均1立方毫米,就算地球上全是沙子,总数量也才1后面21个0,要凑够2的256次方粒沙子,需要1亿亿亿亿亿亿亿个地球才行。

沙子太大,我们举原子的例子。

我们身上的原子数量是1的后面27个0,大概是100万个地球上的沙子总数。

那么2的256次方个原子数量,能构成多少个人呢?

答案是:能构成整个宇宙!

所以,由计算机产生的随机数,分给每一个人,随便分,都不可能重复的。

其他人也不可能利用随机数伪造一个和别人一样的随机数,因为碰撞成功的概率实在是太小了!

就算我们拥有超强的计算机,也无法碰撞出来。

可见,密钥和不同文件的哈希值,在历史上只会出现一次,分配给每一个人、每一台电脑、每一个程序甚至每一粒沙子都足够了,绝不会重复。用完就可以销毁,绝不可惜。

任何人都不能利用随机数伪造,连上帝都不能。

数学算法就是我们的上帝,上帝产生随机的公平,继而创造了区块链!

说到这里,想到了我的身份证,从15位升到18位,发现全国竟然有100万人是重码的,我就是其中之一。

为什么?

因为它不是随机产生的嘛!

7.3 补充一点

就算是上文提到的已经被碰撞成功的SHA-1,其成功概率也才1亿亿亿亿亿亿分之一。

还有人说了,量子计算机可能会是SHA-256的克星。

这个我承认。但你要知道,现在不是发明不出更高强度的算法,而是强度越高,对计算机速度的要求相应也越高。未来量子计算机的计算速度提高了,加密强度也会提高。

所以,不担心。

7.5 下节预告

相信大家也都百度过区块链,老是说区块链是什么分布式账本,下一节,我们就这个“账本”聊一聊,到底它是什么鬼?

我是rruntime,立志写本书,一本可以献给家人和朋友的《区块链启蒙》,敬请支持!


本文首发币乎,已被【币乎榜bihubang.com】收录。

相关文章

网友评论

    本文标题:【区块链启蒙7#】碰撞:中奖的概率

    本文链接:https://www.haomeiwen.com/subject/uezurftx.html