区块链
— 哈希函数
一、什么是哈希函数
Hash,一般翻译做"散列",简单的说你输入任何长度、任何内容的数据,哈希函数输出固定长度、固定格式的结果,这个结果类似于你输入数据的指纹。只要输入发生变化,那么指纹一定会发生变化。
不同的内容,通过哈希函数得到的指纹不一样。这就是哈希函数,它是一种数学函数,又被称为散列函数、哈希函数、散列算法,是一种只能加密,不能解密的密码学算法,它可以将任意长度的信息转换成一段固定长度的字符串,也就是摘要信息,该字符串叫散列值或哈希值。
与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。
特征:
1、单向性:原始信息与摘要信息(哈希值)之间没有规律,所以无法从摘要信息倒推出原始信息,以保证它的运算是不可逆。保证区块链网络能够实现不可篡改性的基础技术之一。
2、只要输入信息改变一点,输出的哈希值(摘要信息)也会出现很大的差别。
3、完全相同的原始信息才能得到完全相同的输出值。
4、]哈希算法可以摘要和简化信息,验证信息,隐藏信息。
二、区块链中的哈希算法有什么用?
哈希算法是区块链中用的最多的一种算法,它被广泛的使用在构建区块和确认交易的完整性上,为了保证数据完整性,会采用哈希值进行校验。
区块链可理解为区块+链的形式,这个链是通过哈希值链接起来,每个区块都有很多交易,整个区块又可以通过哈希函数产生摘要信息,然后规定每一区块都需要记录上一个区块的摘要信息,这样一来所有区块都可以连成链。
如果更改了历史中某一个区块的数据,意味着这个区块摘要值(即哈希值)就会发生改变,那么下一区块中记录的上一个区块的哈希也得做相应的修改,以此类推,也就是说如果要修改历史记录的话,所有记录都要修改才能保证账本的合法性,哈希函数就提高了账本篡改的难度。
哈希算法有很多,比特币和以太坊使用的哈希算法是SHA-256。SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局设计,该算法属于SHA-2系列,在中本聪发明比特币时(2008)被公认为最安全最先进的算法之一,以太坊的哈希算法采用的是全新的SHA3-256。