1.说明
md5加密实现方式有很多,我们学习的是spring框架给我们写好的一个加密方法
- md5加密是不可逆的: 可以通过明文推导出密文,无法通过密文推导明文
-
相对比较安全的。
2.代码演示
// 给我一个明文密码,我返回给你一个密文密码
public static String md5(String password){
byte[] bytes = password.getBytes();
String miwen= DigestUtils.md5DigestAsHex(bytes);
return miwen;
}
3.密文的加密与解密
如果你所在项目没有使用spring框架,我们也犯不着为了一个工具导入spring的jar包,可以去网络上找一个md5的源码类,写在项目中的utils包下。
md5是无法根据密文知道明文的,但是可以通过对撞的方式破解。
https://www.cmd5.com/ 可以进行在线的加密与解密。
通过穷举字符组合的方式,创建了明文密文对应查询数据库,创建的记录约90万亿条。
如果我们使用md5的话,最好使用比较复杂的字符串当做密码,不要使用简单的字符串进行密码设置。
4.增强加密
一般的加密方式会根据强大的数据库记录查询出明文,所以我们编写一个方法用于增强我们的加密的密文:
public static String md5Strong(String password){
byte[] bytes = password.getBytes();
String miwen= DigestUtils.md5DigestAsHex(bytes);
//进行二次加密
String str = miwen.substring(9,19);
String salt = "laoyan";//盐
miwen = DigestUtils.md5DigestAsHex((miwen+str+salt).getBytes());
return miwen;
}