使用Java实现信息摘要算法

1. 介绍

在实际开发中,我们会经常用到一些不可逆的加密算法,例如:MD5算法、SHA1算法、信息摘要算法,还有哈希算法等等。如果没有好好学习一些,真得会搞混的。所以我查找了相关资料,在这里简单介绍一下。

消息摘要算法分为三类:

  • MD(Message Digest):消息摘要
  • SHA(Secure Hash Algorithm):安全散列
  • HMAC(Hash-based Message Authentication Code):散列消息认证码

这三类算法的主要作用:数据加密和验证数据的完整性。

这里提供一个在线工具:http://tool.oschina.net/encrypt?type=2

2. MD

生成的消息摘要都是128位的,包括:MD2、MD4、MD5。从安全性上来说,MD5 > MD4 > MD2。

3. SHA

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA,也有称为哈希算法)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。包括:SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)。

4. HMAC

密钥散列消息认证码(英语:Keyed-hash message authentication code),又称散列消息认证码(Hash-based message authentication code,缩写为HMAC),是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。包括:HmacMD2、HmacMD4、HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512。

5. 总结

这里只是简单介绍一下这三类算法的基本内容,对于算法的具体实现没有涉及到,如果想了解具体实现的朋友,那只能另外找资料了。我自己封装了一个工具类,感兴趣的可以到我的GitHub上面看看 CryptoHelper,具体使用方式请看这个BlogDemo

这里提供一个在线工具:http://tool.oschina.net/encrypt?type=2,方便大家验证。不过这里说明一下,不知道什么原因,我封装的工具类中的HmacSHA224和HmacSHA384这两个算法的加密结果跟这个在线工具不一样。我初步估计可能是JDK的内部实现问题。

发布了43 篇原创文章 · 获赞 34 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/Fantasy_Lin_/article/details/100321883