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】收录。
网友评论