龙空技术网

快速入门区块链密码学的基石——哈希函数

I舟冰I 370

前言:

现在姐妹们对“sha256的hash算法原理”大致比较看重,各位老铁们都想要学习一些“sha256的hash算法原理”的相关资讯。那么小编在网摘上搜集了一些对于“sha256的hash算法原理””的相关资讯,希望大家能喜欢,大家快快来学习一下吧!

区块链技术并不是单纯的某一种技术,而是多种技术的集成和创新,其中包含了P2P网络通信技术、分布式存储技术、共识机制、密码学技术、智能合约等等,其中的密码学技术可以是区块链技术的核心,而哈希函数是密码学应用最为广泛的一种数学函数。

以比特币为例,哈希函数应用在比特币的挖矿、密钥管理、交易等几乎所有的过程中。

接下来,我们就来介绍哈希函数。

哈希函数的主要作用在于可以将任意长度的输入数据通过哈希计算转变成固定长度的输出数据,输出的结果就是哈希值。

业界所使用的哈希函数,是由美国国家标准与技术研究院(NIST)发布的,目前经历了SHA-0,SHA-1,SHA-2,SHA-3四个阶段。比特币系统采用的是SHA-2标准系列中的SHA-256,产生是256位bit长度的哈希值。

哈希函数之所以能在区块链中得到广泛的应用,并不是因为哈希函数的作用,而是因为哈希函数的五个特点:

高灵敏性

对于输入数据,只要发生了变化,哪怕是一个比特位级的变化,都会导致最终的哈希值不同。在区块链中,这个特性可以有效的防止数据篡改,因为篡改了任何数据,计算出来的哈希值都会与原先的哈希值不同。

易压缩

哈希函数可以接受任意长度的数据输入,而且计算出来的结果是固定长度的。当然这要取决于采用的是哪种哈希函数,SHA-128计算出的结果是128位,SHA-256计算出来的结果是256位。在比特币系统中,可以将比特币的交易通过SHA-256进行哈希计算,这样所有的交易都会有一个唯一的固定长度的哈希值,来唯一的标识这笔一个交易。

效率高

哈希函数虽然可以接受任意长度的数据输入,但是其计算难度是随着输入数据成线性的增长。

单向性

单向性指的是哈希函数只能实现从输入数据计算出哈希值,但是不能通过计算出的哈希值反向计算出输入数据,这是哈希函数最主要,也是最基本的特征,也是哈希函数成为密码学最主要函数的原因。在比特币系统中,为了进行比特币的转账交易,需要知道对方的比特币转账地址,而转账地址是由对方的公钥通过哈希计算生成的,由于哈希函数单向性的特点,我们无法通过对方提供的比特币地址反向计算出公钥。

抗碰撞性

在介绍抗碰撞性前,必须要介绍一下什么是哈希碰撞。哈希碰撞指的是有两个不同的输入,在相同的哈希函数计算下,得到了相同的哈希值。那这种情况会不会出现呢,显然是有可能,只不过概率非常小罢了。比如SHA-256的输出结果只有256位,而输入则是无穷的,所以总会有一定机率出现哈希碰撞。理想的哈希函数应该是没有碰撞的,但是在实际算法的设计中很难做到这一点。所以抗碰撞性是评价一个哈希函数是否符合标准的重要特性,但是也正是因为哈希函数抗碰撞性的存在,才使得在比特币系统的挖矿算法中采用了以哈希碰撞的方式作为挖矿的主要原理。

在了解了哈希函数之后,接下来的内容,我们就可以学习密钥原理了。 下期见!

标签: #sha256的hash算法原理