MD5简介
MD5 ,即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
代码示例
首先创建一个springboot项目,加上一个web组件,内容如下:
然后创建一个md5工具类Md5Utils,JDK就自带了md5加密算法,直接调用很方便:
可以看到方法很简单,只是调用了jdk的方法,不用自己再实现,不过默认返回的是字节数组,最后我们调用了一个字节数组转字符串的方法返回加密后的字符串。注意最后字符串字母都改为大写。
加密算法的底层对于使用者来说,可以不用详细研究,只需要知道调用的方式和得到的结果即可。并且md5算法是不可逆的,通过结果无法得知原来的字符串,所以常常用来作为数字签名或者摘要,将得到的字符串加密后与存储好的加密结果进行对比来验证正确性。比如用户名密码登录时,密码字段保存的就可以是md5后的内容,登录时只需要将密码md5加密,然后与保存内容对比即可。
测试
下面进行测试,写一个测试类,来测试字符串“md5”加密后的结果,如下:
直接运行testMd5方法,可以看到结果如下:
通过与网上在线md5加密工具结果对比,可以验证其正确性:
可以看到结果与32位大写结果一致。以上就是md5的介绍和代码的简单实现。