springboot使用MD5保存信息到mysql
不知道你们是使用什么方式,我一般都是通过md5隐藏密码信息,下面我说说我的使用步骤
1.MD5的作用(在网上搜的,侵权别说我)
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
2.环境
IDE:IDEA
语言:JAVA
框架:springboot,mybatis
数据库:mysql
模板引擎:thymeleaf
3.效果
首先是账号的注册,账号和密码都是aaaaaa。
如下图可以看到密码被加密了。
4.pom.xml
下面是MD5要引入的jar包,其它的像mysql,mybatis就没有写上去,自己去找把
<!--MD5-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
5.MD5工具类
如下的md5类所示,有四个方法,分别是
md5,inputPassToFormPass,formPassToDBPass,inputPassToDbPass
注释上面都有,解释一下加盐.
加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做”盐“(salt)的n位随机数相关联。无论何时只要口令改变,随机数就改变。随机数以未加密的方式存放在口令文件中,这样每个人都可以读。不再只保存加密过的口令,而是先将口令和随机数连接起来然后一同加密,加密后的结果放在口令文件中。(这句也是搜的)
下面提供的4个方法都可以调用,自己想用哪个就用哪个。
public class md5 {
//第一次加密(没加盐)
public static String md5(String src) {
return DigestUtils.md5Hex(src);
}
//加盐
private static final String salt = "1a2b3c4d";
//加盐的md5
public static String inputPassToFormPass(String inputPass) {
String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4);
return md5(str);
}
//加盐的md5(盐是自己定义的)
public static String formPassToDBPass(String formPass, String salt) {
String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5) + salt.charAt(4);
return md5(str);
}
//第一次使用md5加密(无盐)然后再次使用md5加密(自定义的盐)
public static String inputPassToDbPass(String inputPass, String saltDB) {
String formPass = inputPassToFormPass(inputPass);
String dbPass = formPassToDBPass(formPass, saltDB);
return dbPass;
}
}