一、MD5简介
MD5,全称为“Message Digest Algorithm 5”,中文名“消息摘要算法第五版”,它是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。严格来说,它是一种摘要算法,是确保信息完整性的。不过,在某种意义上来说,也可以算作一种加密算法。
二、MD5特点
1、压缩性:
任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:
从原数据计算出MD5值很容易。
3、抗修改性:
对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:
已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
三、功能实现
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
* @Description: MD5加密
* @Auther: 忘忧
* @Date: 11:11 2021/8/18
* @Param: 要加密的字符串
* @Return: 加密后的字符串
*/
public static String code(String str){
if(str == null || str.length() == 0){
throw new RuntimeException("数据不能为NULL");
}
try {
//初始化MessageDigest
MessageDigest md =MessageDigest.getInstance("MD5");
//更新
md.update(str.getBytes());
// 获取数据的信息摘要
byte[]byteDigest = md.digest();
int i;
StringBuffer buf = new StringBuffer();
for (int offset = 0; offset < byteDigest.length; offset++) {
i = byteDigest[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
1、测试
public class test {
public static void main(String[] args) {
String md5 =MD5Utils.code("321123");
System.out.println(md5);
}
}
2、运行结果
150920ccedc34d24031cdd3711e43310