哈希算法
哈希算法是一种重要的计算机算法,可以将任意长度的二进制值串以不可逆的方式转化为较短的固定长度二进制值串,这个映射后的值称为哈希值。
一个优秀的哈希算法需要满以下特点:
- 逆向困难:从哈希值难以逆推出原始明文;
- 输入敏感:原始数据的任何修改都会导致最后得到的哈希值大不相同;
- 冲突概率小:两端不同内容的明文,产生相同哈希值的概率非常小。
- 计算高效:可以在有限时间的时间和资源下快速计算出明文对应的哈希值。
区块链通过对一个交易区块中的交易信息进行哈希运算,得到的哈希值能够唯一而准确地标识一个区块,参与记账的节点计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。
基于此,哈希算法可以说是保证区块链不可篡改性的基石。
常见算法:
目前常见的哈希算法包括MD5和SHA系统算法。
Merkel树
默克尔树(Merkle tree,MT)是一种哈希二叉树,1979年由Ralph Merkle发明。与标准二叉树一样,由一组叶节点,一组中间节点和一个根节点构成。叶节点包含存储数据或其哈希值,中间节点是其两个子节点内容的哈希值,最上层的根节点同样也是由它的两个子节点内容的哈希值组成。如图:
以图中树为例,叶节点HA,HB,HC和HD分别存储了交易