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

  CREATED BY JENKINSBOT

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

常见散列算法

1)MD5 (Message Digest Algorithm 5)
2)SHA (Secure Hash Algorithm)
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-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