温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
大家好,这里是深蓝说区块。今天我们继续讲解区块链的关键技术之一,哈希算法。哈希算法在国内又被翻译成叫杂凑算法,或者是散利算法。哈希算法主要具有以下这么几个特点,一个是正向快速,就说对于这个哈希算法给一定的铭文,那么在很快的时间和有限的资源里面就能计算出哈希值。第二个特点是逆向困难,也就是说如果我们只是给出的一个哈希子,那么在有限的时间里面,基本上是不可能在逆向推出它的输入的铭文是什么的。第三个特点是它的输入是任意的长度,但是输出是固定的长度。那么具体这个固定长度多少呢?要取决于具体的一个算法,就比如说我们这里举个例子的六,它这个算法,那么意思就是说我整个算出来的固定长度是256个比特。
01:01
啊,再下一个特点呢,是输入敏感,输入敏感就是说我们原始输入数据值哪怕只有一点点的改动,那么最后产生出来的哈希值就完全不同,我们可以看看这里举的几个例子,我本来是big。那么D这里是大写的,那么我们算出来的哈希值是2B7B什么什么,那么如果中间加了一个空格呢?就因为加了一个空格,你看我们算出来的哈希值就完全不一样了,那我如果我只是把这个大写的D改成小写的D呢?啊,结果又完全不一样了,而且我们似乎也看不出有任何的规律可言,那我们后面试着继续改改改改改,12345不断的这样,跟着不同的数据,那么出来的也是完全不一样的。那如果我直接把一个GB的一个电影,比如说一个MP4文件,那么也可以算出来一个哈希值,那么这些的话,这就是我体现出了我们整个前面说的几个特点,那还有一个非常非常重要的一个特点,就是哈希算法是要冲突避免的,就说我们很难找到两段内容不同的原文,但是最后算出来的哈西子一致,就比如说我们这里big算出来它是2B7B4C这么一个结果。
02:14
那么我想问,就是说能不能找到另外一个输入的内容,它不是big,但是却最后算出来是一模一样的花西子呢?在有限的时间里面,我们是不可能找到的。即使是用什么超级计算机。有限时间里面是不可能找到的。在区块链中常用的哈希算法有以下这几种,一个是前面我们的例子音举到的256,这个是在比特币中被广泛应用的一个哈希算法,另外是三,这是的进一步的一个升级版本啊,这个呢是在以太坊里面被大量的使用,还有像这个哈希算法呢,这个其实也是在比特币里面使用的,我们比特币的一个收款地址,那个地址其实就是通过SH256和这个哈希算法,然后一起联合使用,最后再经过被包编码出来的,那么我们国密里面也是有对应的一个哈希算法叫S3。
03:10
其实大家也听说过的,像什么MD5啊,A1这种,其实已经是不推荐目前已知已经被破解的哈希算法了,所以说我们就不要再使用这两种哈希算法。那么哈希算法在区块链里面的作用,前面我们说到它一一个是像那个比特币这种地址的账户地址生成,还有就是我们的交易的ID,什么区块ID,它这个是怎么来的,它也是把那个区块的内容,或者是交易的这个内容,然后算的哈希值,这个哈希值其实就是它的一个ID。另外还有就是pow公式算法中也是尤其像比特币的W公司,它就是大量的用到了256的这么一个哈希算法。
我来说两句