《这就是区块链》之区块链基础(1)–哈希算法


密码学是一门很深奥的学问,密码学促进了现代计算机的发展,在区块链领域所涉及到的密码学知识主要是哈希算法和数字签名,现在我们来看看哈希算法。

1.什么是哈希算法?

加密算法是指对数据进行一定的加密处理,让自己人可以识别,而别人无法识别的一种算法,哈希算法是常用的加密算法之一。简单说哈希算法就是对于任意一个数据(计算机领域叫字符串),通过哈希算法都可以产生一个256位的加密结果,并且在目前能力范围内无法找到与之重复的结果。我在网上随便找了一个哈希(Hash)算法工具如下所示:

哈希算法测试网址

重点是 任何输入数据都可以输出一个不一样的输出结果。哈希算法包含多种计算方式,常见的有MD5和SHA-256,在历史实践中发现MD5存在重复,在加密场景中已经逐渐被淘汰。我们熟悉的比特币(Bitcoin)使用的便是SHA-256算法(安全哈希算法),而莱特币(Litcoin)使用的则是scrypt算法,你只要记住这里不一样就行了。

进阶:

对于哈希算法来说,一般要求有两个特性:

1.碰撞阻力:无法找到两个输入值,可以使得哈希算法之后的结果相同。

2.隐蔽:就算你知道了输出结果,你也无法找到输入值

2.哈希算法在区块链中的应用

我在开篇中介绍过区块链和链表结构的关系和区别,其实区块链中应用的链表结构叫哈希指针(索引),哈希索引就是指在区块头中存储了上个区块的位置,最重要的是还存储了上个区块数据的哈希加密结果。哈希加密结果具有碰撞阻力(不重复性),所以我们一直听到的区块链具有无法篡改的特性便来自这里。一旦区块的数据被人为篡改,那么下一个区块上面存储的哈希加密结果便无法对应,整个链表便无法连续。

下面做了一张图做一个简要说明:

当然,区块链头部数据用于输入的值还包含一些其他东西,比如时间等,上图为了方便解释,不再加入。

最后再解释两个名词:

创世区块:在哈希指针结构中的第一个区块。

二叉树(梅克尔树):一个区块对应两个子区块,这两个子区块都有上一个区块的哈希信息。

以上便是区块链中应用的哈希算法介绍,下一篇将介绍数字签名。这两者组成了区块链的加密系统。

分享到