00 前言
本系列将以100个区块链知识为基石,循序渐进,娓娓道来,为零基础人士搭建一座区块链认知大厦。
如果有可能,未来会集结成书。(求区块链插画师)
当然,愿意的话,您可以转发给身边的亲人朋友,帮助他们早日启蒙,享受区块链认知红利。
6.1 老实交代
经过前段时间的学习我们对加解密有了一定的认识。
今天讲的内容和加密有一点关系,但关系不大。不过和区块链的关系是非常大的,是区块链大厦的重要根基之一。
为了更好地理解,我们还是有请爱丽丝和鲍勃出场。
话说爱丽丝和鲍勃已经过成了一家人。
【爱丽丝】hi~鲍勃,我发你一份今年的家庭日记账,一天一页共180页,记录有我们的全部开销。接下来的帐你来记,我们每半年轮流一次。
【 鲍 勃 】放心,没有问题!我一定能做到公平、公正、公开,接受领导监督。
【爱丽丝】好啊,你要每周把日记账发我邮箱,接受审计哦!
【 鲍 勃 】放心,放心!
【爱丽丝】鲍勃,你篡改历史账了!老实交代!
【 鲍 勃 】唉,还是被你发现了!我知道你留有底稿,所以不敢大改,就改了一位数字,你怎么就知道了呢?难道一个字一个字地去对比了?
【爱丽丝】我把我记的日记账前180页的内容提取了数字指纹,也相应地提取了你的,一眼就看出不一样了!
【 鲍 勃 】什么是数字指纹,这么神奇?
6.2 数字指纹
假如有两段文字,我们要对比他们之间是否相同,最简单的办法就是一个字一个字的去比较。
假如有两篇文字,几万字甚至几百万字,我们不可能一个字一个字地去比较,怎么办呢?
我们可以用一种方法,分别从这两篇文字中提取数字指纹,数字指纹很短,通常只有几十个数字字母。哪怕两篇文章中只有一个标点符号、一个空格的差异,这几十个数字字母的差异也会有天壤之别,一眼就可以分辨出来。
就像我们两个人,指纹是不同的,就算是无法辨别的双胞胎,指纹也是不同的。
6.3 哈希
这种提取数字指纹的算法我们称为hash算法,也叫哈希算法,提取出来的指纹叫哈希值。
不只是从文本中可以提取哈希值,其他文件都可以提取,比如图片文件、声音文件、电影文件、程序文件和其他的任何文件。
哈希算法的神奇之处在于:
-
文件无论大小,其哈希值都是固定长度,一般也就几十位。
-
相同的文件,其哈希值在任何情况下都是相同的。
-
不同的文件,哪怕有再微乎其微的差异,其哈希值也是天壤之别。
-
哈希值的提取速度非常快。
-
哈希值是单向的,也就是说,从文件可以提取哈希值,但做不到从哈希值还原文件。
由于以上特性,爱丽丝很容易地就抓到了作弊的鲍勃。
哈希算法不止一种,常用的哈希算法有MD5、SHA等。
比特币用到的哈希算法就是SHA-256。
6.4 哈希的另一种用法
哈希值除了用来判别文件是否被篡改,在隐藏信息方面也大有用处。
大家可能听说过,曾经有很多知名网站的数据库被黑客盗取,数据库中保存的海量用户密码遭泄露,要知道很多用户在不同的网站上都是同一个密码,这带来了很大的安全隐患和损失。
发生这种低级事故,是网站方的严重失职。
其实,用哈希值很容易就解决了,而且高效安全。
具体方法是,数据库中不要直接保存用户的密码,只要保存密码的哈希值就可以了。
用户登录的时候,浏览器把密码转换成哈希值,再和数据库中的哈希值比较,如果一样,就说明密码正确,允许登录。
这样,就算是数据库被盗,用户的密码也不会泄露,因为,从哈希值是不可能还原出用户密码的。
这种技巧,就是利用了哈希算法隐藏了隐私信息,在不获取隐私信息的情况下判断隐私信息的合法性。
在区块链上,无时不刻都离不了哈希,关于这一点,以后我们可以慢慢聊。
6.5 下节预告
以著名的哈希算法SHA-256为例,不同的文件都能转换成不同的64位字符串长度的哈希值,该哈希值举世无双、绝无仅有!被誉为该文件的数字指纹。
你真的不想质疑吗?
转换100万个文件也不会重复?100亿个文件还不会重复?!
下一节,我们将揭晓谜底。
我是rruntime,立志写本书,一本可以献给家人和朋友的《区块链启蒙》,敬请支持!
本文首发币乎,已被【币乎榜bihubang.com】收录。
网友评论