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密码编码器相关推荐

  1. Spring Security:密码编码器PasswordEncoder介绍与Debug分析

    博主在之前已经介绍了Spring Security的用户UserDetails与用户服务UserDetailsService,本篇博客介绍Spring Security的密码编码器PasswordEn ...

  2. 使用Spring Security 5进行密码编码器迁移

    最近,我在一个使用自定义PasswordEncoder的项目中工作,需要将其迁移到bcrypt . 当前的密码存储为hash ,这意味着不可能将其还原为原始的String –至少不是简单的方法. 这里 ...

  3. Spring Security with Spring Boot 2.0:密码编码器

    在上一篇文章中,我们使用了用户详细信息服务,以便提供一种基于给定用户名从函数加载数据的方法. 用户详细信息的实现可能由内存机制,sql / no-sql数据库等支持. 选项是无限的. 关于密码存储,我 ...

  4. Spring Security-部分官方文档翻译以及思考-密码编码器

    密码存储 PasswordEncoder接口用于执行密码的单向转换,以安全地存储密码.通常用于数据库密码和用户提供的密码进行比对. 委托密码编码器 在 Spring Security 5.0 之前, ...

  5. 可能是第二好的 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~

    " 本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-68-spring-security-oauth 目录. 原 ...

  6. oracle access manager token,AuthenticationManager验证原理

    AuthenticationManager相关类图 AuthenticationManager验证过程 AuthenticationManager验证过程涉及到的类和接口较多,我们就从这里开始逐一分析 ...

  7. 芋道 Spring Security OAuth2 入门

    芋道 Spring Security OAuth2 入门 总阅读量:28123次 <Dubbo 实现原理与源码解析 -- 精品合集> <Netty 实现原理与源码解析 -- 精品合集 ...

  8. 1.权限认证java.lang.IllegalArgumentException: Cannot pass a null GrantedAuthority collection

    1.权限认证org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring ...

  9. A092_SpringSecurity

    目录 一.认证与授权-新手上路 1.认证授权概述 1.1.什么是认证 1.2.什么是授权 1.3.什么是RBAC 2.基于session的认证授权 2.1.认证流程和认证检查 2.2.授权流程 3.基 ...

最新文章

  1. 点击鼠标左键 自动锁定计算机图标,鼠标一按左键桌面图标就消失了怎么办_为什么按鼠标左键时桌面图标都不见了...
  2. 华为擎云w510_鸿蒙系统之后,华为突然官宣新生态,正式对windows说不
  3. capcreatecapturewindowa 说明_家长不批改作业,还需要写情况说明?
  4. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
  5. jquery控制css的display(控制元素的显示与隐藏)
  6. 打开fiddler后打不开网页_如何通过fiddler的导入导出功能,保存一份分类管理的请求报文...
  7. python实例化次数怎么算,我需要一个Python类来跟踪它被实例化的次数
  8. 第五章 应用程序主窗口
  9. python type
  10. 程序员的内功修炼——值得看的9本书
  11. 读取 配置文件_自动化测试中,如何读取配置文件内容?
  12. Qt Project Build error PRJ0019: 工具从Moc'ing xxx.h...
  13. WPS如何并排放置两张图片_Animate如何制作文字动图动画
  14. R语言基于ggplot绘制多条ROC曲线
  15. Unreal Engine UE4虚幻引擎,创建Sky天空球,球天材质,自制天空球(HDR高动态范围贴图)
  16. TPAdmin 验证码不显示问题
  17. 蚁群算法Python实现
  18. BZOJ 4399 魔法少女LJJ(线段树合并)
  19. 使用Kinect制作变身钢铁侠
  20. 服务器上自动备份数据库突然不备份了

热门文章

  1. 英语敢死队 第三周学习总结感受
  2. MES与ERP的系统整合解决方案,ERP和MES开发定制对企业带来的效益
  3. Hololens shader pack 全息材质库免费下载
  4. C语言期末复习划重点啦!赶上复习的末班车,祝你期末考试不挂科!
  5. OCR 训练 中文语言包
  6. 最近有公司的大数据哥们反馈OKI是0
  7. 图片太大?不符合上传大小?PS帮你搞定!
  8. owa for android 下载,Mobile Access for Outlook OWA
  9. iOS 画板的简单实现
  10. Ashampoo软件大全