思路
- 例如我的密码是123,我生成的随机盐是abc。
- 那我就用123abc去加密。得到密文为 1a2b3c。但是我存数据库的时候我存密文加盐,我存1a2b3c_abc。
- 当我再拿123去解密的时候,我就根据用户名去数据库查找密码。得到密码为1a2b3c_abc。然后我根据规则得到盐是abc。然后再拿新的密码和盐去加密再加上盐,看看是不是个数据库密码一值。
代码事例
用了hutool的依赖
public static void main(String[] args) {
String salt = RandomUtil.randomUUID();
String password = "wujian";
String s1 = SecureUtil.md5(password + salt);
String encodePassword = s1+"_"+salt;
System.out.println(encodePassword);
String password2 = "wujian";
String[] s = encodePassword.split("_");
String salt2 = s[1];
System.out.println(salt2);
String encodePassword2 = SecureUtil.md5(password2 + salt2);
System.out.println(encodePassword2+"_"+salt2);
}