自写MD5密码加密工具类
获取用户输入的密码后
定义第一次加密salt
和密码进行拼装后进行第一次MD5加密
然后将第一次加密后的值,和随机生成的saltDB进行第二次加密
**注:**第二次加密所需要的saltDB也可写为固定的值,
若saltDB为随机生成,应与用户信息一起存到数据库中,以免丢失。
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>
现在开始写一个MD5的工具类
package com.xcl.util;
import org.apache.commons.codec.digest.DigestUtils;
/**
* MD5Util
*密码md5加密
* @author 徐长乐
* @date 2019/8/5
*/
public class MD5Util {
//使用依赖工具类中MD5方法
public static String md5(String str){
return DigestUtils.md5Hex(str);
}
//定义第一次加盐
private static final String salt="1a2b3c4d";
// 将盐值 和表单中输入密码实现拼装后 MD5加密并返回
public static String inputPassFormPass(String inputpass){
String str=""+salt.charAt(0)+salt.charAt(2)+inputpass+salt.charAt(5)+salt.charAt(4);
return md5(str);
}
//第二次加密并返回 salt可为生成的随机数
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);
}
//实现二次加密方法
public static String inputPassToDBPass(String input ,String saltDB){
String formPass=inputPassFormPass(input);
String dbPass=formpassToDBPass(formPass,saltDB);
return dbPass;
}
//test
public static void main(String[] args) {
System.out.println(inputPassToDBPass("123456","1a2b3c4d"));
}
}
当获取密码后 ,可直接调用工具类中的 inputPassToDBPass(String input ,String saltDB)方法 input为用户输入的密码,saltDB为盐值,推荐使用随机生成的盐值,并存到数据库中与用户一一对应,使一个用户对应一个盐值。