md5:md5(原始值)每次生成的值都一样,会引起彩虹表攻击。
public void md5(){
String sourceString = "123456";
String s = DigestUtils.md5DigestAsHex(sourceString.getBytes());
System.out.println("第1次加密值"+s);
s = DigestUtils.md5DigestAsHex(sourceString.getBytes());
System.out.println("第2次加密值"+s);
}
为了防止彩虹表攻击,使用bcrypt加密。
public void bcrypt(){
String sourceString = "123456";
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(sourceString);
System.out.println("第1次加密值"+encode);
boolean matches = bCryptPasswordEncoder.matches(sourceString, encode);
System.out.println("第一次验证"+matches);
encode = bCryptPasswordEncoder.encode(sourceString);
System.out.println("第2次加密值"+encode);
matches = bCryptPasswordEncoder.matches(sourceString, encode);
System.out.println("第2次验证"+matches);
}