开始

Spring Security 中含有两种经常被使用的密码加密器:Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder

加密器工作形式:

传入原本密码,通过 encode() 方法获得加密后的字符串,字符串的生成与时间或者 hash 有关。所以,即使需要加密的密码相同,每次生成的字符串也不同,但是通过相同密码生成的字符串即使不同,也都可以通过加密器的 matches() 方法与原本密码匹配成功,通过校验

推荐使用

推荐使用 Pbkdf2PasswordEncoder 加密器,该加密器可以在创建时可以传入一个字符串阴钥,从而获得一个只属于你的加密器,即使数据库中密码的加密字符串被盗取,如果没有阴钥,则永远无法获得原密码

而对于 BCryptPasswordEncoder ,被盗取加密字符串后,如果用户使用了简单密码,则可以通过彩虹表获取原密码

SpringBoot测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class ConfigTest {// 注入配置的阴钥@Value("${system.user.password.secret}")private String secret;@Testpublic void testPasswordEncoder(){Pbkdf2PasswordEncoder pbkdf2PasswordEncoder = new Pbkdf2PasswordEncoder(secret);BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();String pbk1 = pbkdf2PasswordEncoder.encode("123456");String pbk2 = pbkdf2PasswordEncoder.encode("123456");String bcr1 = bCryptPasswordEncoder.encode("123456");String bcr2 = bCryptPasswordEncoder.encode("123456");System.out.println("pbk1: " + pbk1);System.out.println("pbk2: " + pbk2);System.out.println("pbk1 password:" + pbkdf2PasswordEncoder.matches("123456",pbk1));System.out.println("pbk2 password:" + pbkdf2PasswordEncoder.matches("123456",pbk2));System.out.println("---------------------");System.out.println("bcr1: " + bcr1);System.out.println("bcr2: " + bcr2);System.out.println("bcr1 password:" + bCryptPasswordEncoder.matches("123456",bcr1));System.out.println("bcr2 password:" + bCryptPasswordEncoder.matches("123456",bcr2));}
}

测试结果

可见加密字符串的不同并不会影响与原密码的匹配

Spring Security 密码加密器 Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder相关推荐

  1. Spring Security 密码验证动态加盐的验证处理

    本文个人博客地址:https://www.leafage.top/posts/detail/21697I2R 最近几天在改造项目,需要将gateway整合security在一起进行认证和鉴权,之前ga ...

  2. 【Spring Security】解答Spring Boot 中密码加密的正确方式?

    Spring Boot 项目中密码如何加密 先说一句:密码是采用非对称加密是无法解密的.密码无法解密,还是为了确保系统安全.今天就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全.密 ...

  3. Spring Security教程

    Spring Security教程 Web系统中登录认证(Authentication)的核心就是凭证机制,无论是Session还是JWT,都是在用户成功登录时返回给用户一个凭证,后续用户访问接口需携 ...

  4. springboot2 war页面放在那_Spring Boot2 系列教程(三十三)整合 Spring Security

    Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理 ...

  5. 手把手带你入门 Spring Security!

    Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理 ...

  6. Spring Boot 密码加密的 2 种姿势!

    先说一句:密码是无法解密的. 密码无法解密,还是为了确保系统安全.今天松就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全. 1.为什么要加密 2011 年 12 月 21 日,有人 ...

  7. Spring Security构建Rest服务-0702-短信验证码登录

    先来看下 Spring Security密码登录大概流程,模拟这个流程,开发短信登录流程 1,密码登录请求发送给过滤器 UsernamePasswordAuthenticationFilter 2,过 ...

  8. Spring Security(安全框架)

    一.概念 (1)Spring Security是一个高度自定义的安全框架.利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作. ( ...

  9. SpringSecurity系列文章 (一)Spring Security 认知

    在文章开篇先说说为何使用Spring Security,在新的公司中现在认证授权服务是通过Spring Security auth2进行认证的,原本没用过这个啊,只知道apche shiro 现在还有 ...

  10. Spring Security BCryptPasswordEncoder 密码加盐

    Spring Security BCryptPasswordEncoder 密码加盐 引入spring-boot-starter-security 的Jar包 <dependency>&l ...

最新文章

  1. vs code搭建Django环境
  2. 玩转Python!一文详述Python 的高性能使用技巧
  3. java 报文请求_http 请求报文和响应报文编写 (java socket实例)
  4. CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录
  5. Windows内核实验002 中断现场
  6. 杭电 2036 改革春风吹满地【求多边形面积】
  7. Mac OS使用技巧之十六:系统失去响应怎么办?
  8. action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!
  9. 磁盘文件的正常读写与异步读写
  10. 自适应高度表格_React实现自适应高度的lt;textareagt;
  11. 【Kafka】Confluent Schema Registry
  12. 开关电源设计从入门到精通(附教程)
  13. AS3动画效果公式,常用处理公式代码,基本运动公式,三角公式
  14. 【优化算法】多目标灰狼优化算法(MOGWO)【含Matlab源码 099期】
  15. 名帖07 赵宧光 篆书《篆书四箴册》
  16. Postman -中文版-安装教程
  17. react-native 调用第三方 SDK
  18. Java导出数据到Excel文件
  19. 拼多多蓝海词数据分析工具哪个好?多多情报通怎么样?
  20. 使用Servlet作为控制器

热门文章

  1. 一个人分享的经历的故事和感悟
  2. Python 字符串重复判断
  3. python蓝屏_plt.绘图()导致windows出现蓝屏
  4. PHP防范XSS攻击
  5. 精细化运营:RFM模型在手游付费用户分群中的优化与应用
  6. DATAGUARD手记(DUPLICATE)(四)
  7. GRYZ 模 拟 赛 系 列 Xxy 的车厢调度
  8. 精讲Spring Boot—入门+进阶+实例
  9. HTML5 第003篇 area标签
  10. 如何添加油猴脚本用以模拟点击网页按钮