- 区块链原理、技术及应用
- 范凌杰编著
- 593字
- 2025-02-18 00:54:48
2.1.1 什么是哈希算法和哈希值
在介绍哈希算法之前,先说明一下数据在计算机中的存储方式。在计算机中,数据是以二进制的形式存储的,一切数据都是由一连串的0和1组成的,如图2-1所示。

图2-1 数据在计算机中的存储方式
哈希算法又称散列算法,它是一类数学方法,能将任意长度的二进制字符串转换成较短的二进制字符串,转换生成的这个二进制字符串叫作哈希值。哈希算法的公式如下:
h=hash(x)
其中x表示任意长度的二进制字符串,hash表示哈希函数,h表示生成的固定长度的哈希值,过程如图2-2所示。

图2-2 由哈希算法生成哈希值
上面“BEB418...”这个字符串就是一个哈希值。而hash这个哈希函数不是唯一的,有很多数学函数都可以计算生成不同长度的哈希值。目前常用的哈希函数主要有两个系列,MD和SHA系列。
MD(Message Digest)主要包括MD4和MD5两种。MD4是MIT的Ronald L. Rivest在1990年设计的哈希函数,其输出值为128位,但已被证明不够安全。MD5是Rivest于1991年对MD4的改进版本。它的输入值仍以512位进行分组,其输出值也是128位。但MD5比MD4更加安全,只是过程更复杂,计算速度要慢一些。
SHA(Secure Hash Algorithm)包括SHA1和SHA2(SHA224、SAH256、SHA384、SHA512)系列,其中224、256、384、512都是指其输出值的位长度。目前SHA1已经被破解,大多数应用场景下,推荐使用SHA256以上的算法。SHA256是由美国国家安全局研发,美国国家标准与技术研究院(NIST)于2001年发布的算法,将任何一串数据通过SHA256算法计算都将得到一个256位的Hash值。
了解了哈希算法的分类后,接下来对哈希算法的特点进行介绍。