数据库密码加密处理

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");

后续还会继续更新。。。。。啦啦啦啊。。。。。。

你可能感兴趣的:(中间件&服务框架,java,开发语言)