Spring Security 密码加密器 Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder
开始
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相关推荐
- Spring Security 密码验证动态加盐的验证处理
本文个人博客地址:https://www.leafage.top/posts/detail/21697I2R 最近几天在改造项目,需要将gateway整合security在一起进行认证和鉴权,之前ga ...
- 【Spring Security】解答Spring Boot 中密码加密的正确方式?
Spring Boot 项目中密码如何加密 先说一句:密码是采用非对称加密是无法解密的.密码无法解密,还是为了确保系统安全.今天就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全.密 ...
- Spring Security教程
Spring Security教程 Web系统中登录认证(Authentication)的核心就是凭证机制,无论是Session还是JWT,都是在用户成功登录时返回给用户一个凭证,后续用户访问接口需携 ...
- springboot2 war页面放在那_Spring Boot2 系列教程(三十三)整合 Spring Security
Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理 ...
- 手把手带你入门 Spring Security!
Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理 ...
- Spring Boot 密码加密的 2 种姿势!
先说一句:密码是无法解密的. 密码无法解密,还是为了确保系统安全.今天松就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全. 1.为什么要加密 2011 年 12 月 21 日,有人 ...
- Spring Security构建Rest服务-0702-短信验证码登录
先来看下 Spring Security密码登录大概流程,模拟这个流程,开发短信登录流程 1,密码登录请求发送给过滤器 UsernamePasswordAuthenticationFilter 2,过 ...
- Spring Security(安全框架)
一.概念 (1)Spring Security是一个高度自定义的安全框架.利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作. ( ...
- SpringSecurity系列文章 (一)Spring Security 认知
在文章开篇先说说为何使用Spring Security,在新的公司中现在认证授权服务是通过Spring Security auth2进行认证的,原本没用过这个啊,只知道apche shiro 现在还有 ...
- Spring Security BCryptPasswordEncoder 密码加盐
Spring Security BCryptPasswordEncoder 密码加盐 引入spring-boot-starter-security 的Jar包 <dependency>&l ...
最新文章
- vs code搭建Django环境
- 玩转Python!一文详述Python 的高性能使用技巧
- java 报文请求_http 请求报文和响应报文编写 (java socket实例)
- CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录
- Windows内核实验002 中断现场
- 杭电 2036 改革春风吹满地【求多边形面积】
- Mac OS使用技巧之十六:系统失去响应怎么办?
- action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!
- 磁盘文件的正常读写与异步读写
- 自适应高度表格_React实现自适应高度的lt;textareagt;
- 【Kafka】Confluent Schema Registry
- 开关电源设计从入门到精通(附教程)
- AS3动画效果公式,常用处理公式代码,基本运动公式,三角公式
- 【优化算法】多目标灰狼优化算法(MOGWO)【含Matlab源码 099期】
- 名帖07 赵宧光 篆书《篆书四箴册》
- Postman -中文版-安装教程
- react-native 调用第三方 SDK
- Java导出数据到Excel文件
- 拼多多蓝海词数据分析工具哪个好?多多情报通怎么样?
- 使用Servlet作为控制器