PasswordEncoder密码编码器
Spring Security封装了如PBKDF2 , scrypt, Argon2,bcrypt等主流适应性单向加密方法,支持不同的密码加密方式,而且根据不同的用户可以使用不同的加密方式。
/*** 密码编码器*/@Resourceprivate PasswordEncoder passwordEncoder;
目前PasswordEncoder只提供了三个接口方法,具体用法如下;
//encode()是对字符串进行加密的方法,一般对密码进行加密时调用;String encode(CharSequence rawPassword);//使用来校验传入的明文密码rawPassword是否和加密密码encodedPassword相匹配的方法,//一般登录认证时调用;boolean matches(CharSequence rawPassword, String encodedPassword);//upgradeEncoding()是重新编码密码;default boolean upgradeEncoding(String encodedPassword) {return false;}
可以看到,下面这个encode()方法中先得到了一个盐值加盐,并且进行hash加密,所以每次得到的密文都不一样,保证了加密后的安全性
public String encode(CharSequence rawPassword) {if (rawPassword == null) {throw new IllegalArgumentException("rawPassword cannot be null");} else {String salt = this.getSalt();return BCrypt.hashpw(rawPassword.toString(), salt);}}
小结
PasswordEncoder使用哈希算法+随机盐来对字符串加密。因为哈希是一种不可逆算法,所以密码认证时需要使用相同的算法+盐值来对待校验的明文进行加密,然后比较这两个密文来进行验证。BCryptPasswordEncoder在加密时通过从传入的salt中获取real_salt用来加密,保证了这一点。
PasswordEncoder密码编码器相关推荐
- Spring Security:密码编码器PasswordEncoder介绍与Debug分析
博主在之前已经介绍了Spring Security的用户UserDetails与用户服务UserDetailsService,本篇博客介绍Spring Security的密码编码器PasswordEn ...
- 使用Spring Security 5进行密码编码器迁移
最近,我在一个使用自定义PasswordEncoder的项目中工作,需要将其迁移到bcrypt . 当前的密码存储为hash ,这意味着不可能将其还原为原始的String –至少不是简单的方法. 这里 ...
- Spring Security with Spring Boot 2.0:密码编码器
在上一篇文章中,我们使用了用户详细信息服务,以便提供一种基于给定用户名从函数加载数据的方法. 用户详细信息的实现可能由内存机制,sql / no-sql数据库等支持. 选项是无限的. 关于密码存储,我 ...
- Spring Security-部分官方文档翻译以及思考-密码编码器
密码存储 PasswordEncoder接口用于执行密码的单向转换,以安全地存储密码.通常用于数据库密码和用户提供的密码进行比对. 委托密码编码器 在 Spring Security 5.0 之前, ...
- 可能是第二好的 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~
" 本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-68-spring-security-oauth 目录. 原 ...
- oracle access manager token,AuthenticationManager验证原理
AuthenticationManager相关类图 AuthenticationManager验证过程 AuthenticationManager验证过程涉及到的类和接口较多,我们就从这里开始逐一分析 ...
- 芋道 Spring Security OAuth2 入门
芋道 Spring Security OAuth2 入门 总阅读量:28123次 <Dubbo 实现原理与源码解析 -- 精品合集> <Netty 实现原理与源码解析 -- 精品合集 ...
- 1.权限认证java.lang.IllegalArgumentException: Cannot pass a null GrantedAuthority collection
1.权限认证org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring ...
- A092_SpringSecurity
目录 一.认证与授权-新手上路 1.认证授权概述 1.1.什么是认证 1.2.什么是授权 1.3.什么是RBAC 2.基于session的认证授权 2.1.认证流程和认证检查 2.2.授权流程 3.基 ...
最新文章
- 点击鼠标左键 自动锁定计算机图标,鼠标一按左键桌面图标就消失了怎么办_为什么按鼠标左键时桌面图标都不见了...
- 华为擎云w510_鸿蒙系统之后,华为突然官宣新生态,正式对windows说不
- capcreatecapturewindowa 说明_家长不批改作业,还需要写情况说明?
- android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
- jquery控制css的display(控制元素的显示与隐藏)
- 打开fiddler后打不开网页_如何通过fiddler的导入导出功能,保存一份分类管理的请求报文...
- python实例化次数怎么算,我需要一个Python类来跟踪它被实例化的次数
- 第五章 应用程序主窗口
- python type
- 程序员的内功修炼——值得看的9本书
- 读取 配置文件_自动化测试中,如何读取配置文件内容?
- Qt Project Build error PRJ0019: 工具从Moc'ing xxx.h...
- WPS如何并排放置两张图片_Animate如何制作文字动图动画
- R语言基于ggplot绘制多条ROC曲线
- Unreal Engine UE4虚幻引擎,创建Sky天空球,球天材质,自制天空球(HDR高动态范围贴图)
- TPAdmin 验证码不显示问题
- 蚁群算法Python实现
- BZOJ 4399 魔法少女LJJ(线段树合并)
- 使用Kinect制作变身钢铁侠
- 服务器上自动备份数据库突然不备份了