MD5加密

@Test
public void contextLoads() {
  // d4541250b586296fcce5dea4463ae17f
  // 抗修改性:但是网上都有md5暴力破解程序。就是别人暴力破解然后将破解的结果存入数据库里面,所以就能解析出MD5的原文
  String s = DigestUtils.md2Hex("123456");
  System.out.println("s = " + s);
  // MD5不能直接进行密码的加密存储,需要在原文的基础上加盐(随机字符)
  String s2 = DigestUtils.md2Hex("123456" + System.currentTimeMillis());
  System.out.println("s2 = " + s2);
  String s1 = Md5Crypt.md5Crypt("12345".getBytes(),"$1$qqqqqqqq");
  System.out.println("s1 = " + s1);
  // 通过自定义随机字段来实现加盐操作,需要在数据库中存储这个用于对应的盐值,很麻烦。spring 提供了简便的操作
  // 好处:我们不需要自己维护每个用户的盐值是什么,spring这个工具会随机生成,还能根据密文推断出原文是什么
  // 这么看来,这样子也是不安全的仍然可以暴力破解,不过吧MD5的跟费劲,因为md5是一样的,而spring这个工具是每次加密的密文都不一样。
  BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
  // $2a$10$zsWQmE/oCHeL5zglk/okgu.oL/pfftIVAaDS73A606k6K.deqhZzq
  // $2a$10$dtLuUZKZ8DI8AbE2C8QREeZfI8xjCXH7QcT3XakK1DlbANE9zq0Ym
  String encode = bCryptPasswordEncoder.encode("12345");
  System.out.println("encode = " + encode);
  Boolean b = bCryptPasswordEncoder.matches("12345", "$2a$10$dtLuUZKZ8DI8AbE2C8QREeZfI8xjCXH7QcT3XakK1DlbANE9zq0Ym");
  Boolean b2 = bCryptPasswordEncoder.matches("12345", "$2a$10$zsWQmE/oCHeL5zglk/okgu.oL/pfftIVAaDS73A606k6K.deqhZzq");
  System.out.println("b = " + b);
  System.out.println("b2 = " + b2);
}

最终选用spring 提供的BCryptPasswordEncoder类帮我们实现加盐的MD5加密,还能使用密文和原文匹配是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值