「CS/CRYPTOGRAPHY」- 密码散列函数

数据认证的主要目的是确认数据是否被篡改,数据认证主要基于 Hash 算法;
数据通过 Hash 算法计算出一个唯一的 Hash 值,Hash 值携带在数据中转发给对端;
对端设备对数据重新进行 Hash,得出 Hash 值。将收到的 Hash 值与计算出的 Hash 值进行比对,一致说明没有被篡改;

散列算法:把任意长度的输入变换成固定长度的输出,h=H(M)

常见散列算法

1)MD5 (Message Digest Algorithm 5),通过输入任意长度的消息,产生 128bit 的消息摘要;
2)SHA (Secure Hash Algorithm),通过输入长度小于 264bit 的消息,产生 160bit 的消息摘要;
3)SM3 (Senlior Middle 3 )

MD5(信息认证代码)是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。将数据(如汉字)运算为另一固定长度值。其作用是让大量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式。除了可以用于数字签名,还可以用于安全访问认证;

SHA(安全哈希算法)主要适用于数字签名标准里面定义的数字签名算法;

SHA-1:安全散列算法 SHA(Secure Hash Algorithm)是由 NIST 开发的。在 1994 年对原始的 HMAC 功能进行了修订,被称为 SHA-1。SHA-1 在 RFC2404 中描述。SHA-1 产生 160 位的消息摘要。SHA-1 比 MD5 要慢,但是更安全。因为它的签名比较长,具有更强大的防攻破功能,并可以更有效的发现共享的密钥;SHA-1 的摘要长于 MD5,因而是更安全的。但是 SHA1 的计算过程比 MD5 更耗费时间和资源;

SHA-2:SHA-2 是 SHA-1 的加强版本,SHA-2 算法相对于 SHA-1 加密数据长度有所上升,安全性能要远远高于 SHA-1。SHA-2 算法包括 SHA2-256、SHA2-384 和 SHA2-512,密钥长度分别为 256 位、384 位和 512 位;

SM3(国密算法)是国家密码管理局编制的商用算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求;

以上几种算法各有特点,MD5 算法的计算速度比 SHA-1 算法快,而 SHA-1 算法的安全强度比 MD5 算法高,SHA-2、SM3 算法相对于 SHA-1 来说,加密数据位数的上升增加了破解的难度,使得安全性能要远远高于 SHA-1;

参考文献

Hash function – Wikipedia