HALO小课堂:No.8 哈希算法——连接区块的绳索
Halo研究所
2018-12-28
热度18271

在第二期的时候就曾说过,区块链具有信息不可篡改的特点,因此我们经常会听到区块链在溯源防伪上的运用。

摘要:在第二期的时候就曾说过,区块链具有信息不可篡改的特点,因此我们经常会听到区块链在溯源防伪上的运用,刘强东说过一句话,意思是以后的供应链发展会让人们知道所吃的鸡蛋来自哪个农场,甚至是哪只鸡下的蛋,那么接下来我们就来了解一下,为何它能有如此强大的能力。

区块链的组成

在正式进入哈希算法概念前,先提及一下区块链的组成机构,顾名思义,就是由一个个区块所构成的链式结构,而区块呢,就很像数据库的记录,每次写入数据,就是创建一个区块,每个区块里包含两个部分:

1、区块头(Head):记录当前区块的特征值,包含了生成时间、实际数据即(区块体)的哈希、上一个区块的哈希等等

2、区块体(Body):实际数据

那么哈希到底是什么呢?

哈希算法

哈希算法又叫散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串。

如图通过哈希计算器输入得到结果,可以发现这串字符串具有一些特点:

1、就算输入值只改变一点,输出的哈希值也会天差地别;

2、只有完全一样的输入值才能得到完全一样的输出值;

3、输入值与输出值之间没有规律,所以不能通过输出值算出输入值,要想找到指定的输出值,只能采用枚举法,不断更换输入值,寻找满足条件的输出值,因此是不可逆的。

并且哈希值的计算速度极快,哈希一部20G高清电影和一个5K文本文件复杂度相同,计算量都极小,可以在0.1秒内得出结果,大大减少了算力成本。

以比特币为例,哈希算法保证了比特币挖矿不能逆向推导出结果。所以,矿工持续不断地进行运算,本质上是在暴力破解正确的输入值,谁最先找到谁就能获得比特币奖励。

哈希算法之于区块链

在区块链中,通常使用SHA-256(安全散列算法)进行区块加密,这种算法的输入长度为256位,输出的是一串长度为32字节的随机散列数据。

区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而准确地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。

而哈希值所具有的特性也和我们上期提到的非对称加密有着天然的契合度,因此在哈希算法也是非对称密码当中一个重要的算法。

哈希值的安全性

从理论上说,哈希值是可以被获得的,但是对应的用户密码很难获得。

假设一个网站被攻破,黑客获得了哈希值,但仅仅只有哈希值还不能登录网站,他还必须算出相应的账号密码。

计算密码的工作量是非常庞大且繁琐的,严格来讲,密码是有可能被破译的,但破译成本太大,被成功破译的几率很小,所以基本是不用担心密码泄露的。

当然,黑客们还可以采用一种物理方法,那就是猜密码。他可以随机一个一个的试密码,如果猜的密码算出的哈希值正好与真正的密码哈希值相同,那么就说明这个密码猜对了。

密码的长度越长,密码越复杂,就越难以猜正确。如果有一种方法能够提高猜中密码的可能,那么可以算是哈希算法被破解了。

比如说,例如原本猜中的概率是1/10000000000000,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜,直到地球毁灭都可能没猜中,但后者只需要1小时就足够了。在这样的情况下,哈希算法就算是被破解啦,不过那该是猴年马月的事情了。

而且除了哈希算法,区块还包含的其他特征又提供双重保险保证了区块链的不可篡改。

在本期课堂中我们首次提到了区块的组成内容,其中区块所包含的特征及信息无不都是巧妙的设计,接下来的科普课堂将继续为大家了解区块中除哈希值外的其他内容,以便更好地理解区块链所具有的的特性。

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96