1. MD5&盐选&BCrybt
MD5&MD5盐值加密
Message Digest algorithm5,信息摘要算法:
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的
- 容易计算:从原数据计算出MD5值很容易
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别·强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的
加盐:
- 通过生成随机数与MD5生成字符串进行组合
- 数据库同时存储MD5值与salt值,验证正确性时使用salt进行MD5即可
@Test
public void test01(){
// String s= DigestUtils.md5Hex("123456");
// String s1= Md5Crypt.md5Crypt("123456".getBytes(),"$1$qqqqqq");
BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
String encode=passwordEncoder.encode("123456");
boolean matches=passwordEncoder.matches("123456","$2a$10$1wj4ZKm2khXSP7KVB3Efp.lQHXLtSZcLpbOLjhvukypPaW9vqs6Cq");
System.out.println(encode);
System.out.println(matches);
// System.out.println(s);
// System.out.println(s1);
}
根据以上代码,可以用这行代码就行加密,即将用户数据存入数据库库时。
String encode=passwordEncoder.encode("123456");
当需要登录时,可以用下面这行代码进行解密。
boolean matches=passwordEncoder.matches("123456","$2a$10$1wj4ZKm2khXSP7KVB3Efp.lQHXLtSZcLpbOLjhvukypPaW9vqs6Cq");
后续还会继续更新。。。。。啦啦啦啊。。。。。。