哈希的英文名Hash,意思为散列,它将任意长度的二进制值对应为固定长度的二进制值,这个值就是我们所要说的哈希值。哈希值的输出空间一般要比输入空间小很多,不一样的输入也会哈希成相同的输出。在哈希一段明文中,如果改变明文中的内容,会导致散列产生不一样的结果,如果要想找到哈希为同一个数值的不同的输入内容,是无法通过各种算法来实现的,因此我们可以利用散列值的这一特点来检验数据的完整性。较为先进合理的哈希算法,可以通过对散列输入数据进行修改时,可以更改结果散列值中的所有位,所以散列对于数据的检测有很好的作用。

哈希算法的原理是根据数据帧的散列值服务器数计算出余数,通过这种方法来确定目前数据帧中的内容将会发向哪一个散列值服务器。哈希算法的方式很多,典型的哈希算法包括:MD4、MD5 和安全哈希算法(SHA-1)等

MD4算法

MD4算法是哈希算法中较为成熟的算法之一,它一般使用在32位的计算机处理器模块内,通过软件系统来实现其算法功能。然而,由于MD4算法本身存在的安全性漏洞,还是被更为先进安全的算法所淘汰。但MD4算法为之后的MD5算法、SHA-1算法、ripemd算法等提供了很好的理论基础。

MD5算法

MD5算法是MD4算法的升级版,它在MD4算法的基础上增加了safety-belts功能,使整个算法变得更加可靠。MD5算法在MD4算法的基础上加入了第四轮的计算模式,每一个步骤都是一一对应的固定值,改进了MD4算法中在第二轮、第三轮计算中的漏洞,完善了访问输入分组的次序,从而减小其对称性和相同性。通过这些变化,使得MD5与MD4相比变得复杂很多,整个运转速度也要比MD4慢一些,但是从整体安全性、抗冲突和抗分析方面有了很大的提高。

SHA-1算法

SHA-1算法也叫做安全哈希算法,主要应用于digital signature standard dss里面定义的数字签名算法。SHA-1算法长度一般为160bit的message digest,SHA-1算法在接收消息摘要的过程中,可以利用message digest来检查数据的完整情况。它不会从message digest中还原相关的内容,此外两个不同的message digest不会产生相同的message digest,因此SHA-1算法具有很强的brute-force性能。SHA-1算法的计算方式是基于MD4的算法原理,它的填补和分组模式与MD5是一样的,但是在算法中,SHA-1的非线性函数、循环左移运算和加法常数与MD5算法的运算方式有一定的差异,SHA-1的安全性和稳定性比MD5算法更加可靠,且运算速度也有了一定的提高。

哈希算法是目前较为先进的加密算法,它以其单向性、抗冲突性、映射分布均匀性和差分分布均匀性等特点,广泛应用于工业、商业等各个领域之中。