Spring Security使用出现 Encoded password does not look like BCrypt异常的解决以及Spring Securit加密方式的学习

QUESTION:Spring Security使用出现 Encoded password does not look like BCrypt异常的解决以及Spring Securit加密方式的学习?

目录

QUESTION:Spring Security使用出现 Encoded password does not look like BCrypt异常的解决以及Spring Securit加密方式的学习?

ANWSER:

一:问题提出

二:解决方法:

三:Spring Securit加密方式


ANWSER:

一:问题提出

 

博主在做一个SSM整合企业权限管理系统case时,第一次使用spring security框架进行权限验证,在经过一系列bug的修改,最后逻辑通了,却出现 Encoded password does not look like BCrypt。查询半天无果,特此写下关于spring security框架的学习心得。

之所以出现以上异常,是因为版本升级5.x后,密码格式不匹配产生。

我们可以看下抛出异常的源代码:

package org.springframework.security.crypto.bcrypt;import java.security.SecureRandom;
import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.crypto.password.PasswordEncoder;public class BCryptPasswordEncoder implements PasswordEncoder {private Pattern BCRYPT_PATTERN;private final Log logger;private final int strength;private final SecureRandom random;public BCryptPasswordEncoder() {this(-1);}public BCryptPasswordEncoder(int strength) {this(strength, (SecureRandom)null);}public BCryptPasswordEncoder(int strength, SecureRandom random) {this.BCRYPT_PATTERN = Pattern.compile("\\A\\$2a?\\$\\d\\d\\$[./0-9A-Za-z]{53}");this.logger = LogFactory.getLog(this.getClass());if (strength == -1 || strength >= 4 && strength <= 31) {this.strength = strength;this.random = random;} else {throw new IllegalArgumentException("Bad strength");}}public String encode(CharSequence rawPassword) {String salt;if (this.strength > 0) {if (this.random != null) {salt = BCrypt.gensalt(this.strength, this.random);} else {salt = BCrypt.gensalt(this.strength);}} else {salt = BCrypt.gensalt();}return BCrypt.hashpw(rawPassword.toString(), salt);}public boolean matches(CharSequence rawPassword, String encodedPassword) {if (encodedPassword != null && encodedPassword.length() != 0) {if (!this.BCRYPT_PATTERN.matcher(encodedPassword).matches()) {this.logger.warn("Encoded password does not look like BCrypt");return false;} else {return BCrypt.checkpw(rawPassword.toString(), encodedPassword);}} else {this.logger.warn("Empty encoded password");return false;}}
}
public boolean matches()方法中进行判定密码是否匹配。

二:解决方法:

修改密码加密的方式:

一开始我的代码:

 User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),userInfo.getStatus()==0?false:true,true,true,true,getAuthority(userInfo.getRoles()));

改变成:

 BCryptPasswordEncoder bCryptPasswordEncoder=new BCryptPasswordEncoder();
//        User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(), getAuthority(userInfo.getRoles()));User user=new User(userInfo.getUsername(),"{noop}"+bCryptPasswordEncoder.encode(userInfo.getPassword()),userInfo.getStatus()==0?false:true,true,true,true,getAuthority(userInfo.getRoles()));

三:Spring Securit加密方式

BCrypt 算法与 MD5/SHA 算法有一个很大的区别,每次生成的 hash 值都是不同的,就可以免除存储 salt,暴力破解起来也更困难。BCrypt 加密后的字符长度比较长,有60位,所以用户表中密码字段的长度,如果打算采用 BCrypt 加密存储,字段长度不得低于 68(需要前缀 {bcrypt})。

对于Spring Security的学习,本博主后续会写。

专栏:Spring Security

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为公布最新“十大发明”!

来源&#xff1a;华为“十大发明”旨在肯定和奖励有潜力开创新的产品系列、成为产品重要商业特性&#xff0c;并为公司和行业带来巨大商业价值的发明或专利技术。日前&#xff0c;华为在深圳举办2022创新和知识产权论坛&#xff0c;发布了2021年华为十大发明&#xff08;Huawei…

毕业设计-课程设计-Spring+SpringMVC+Mybatis项目—企业权限管理系统(1)

JavaEE&#xff1a;SpringSpringMVCMybatis项目—企业权限管理系统 首先给出项目演示地址&#xff1a;http://www.youngxy.top:8080/SSM/ 项目架构图&#xff1a; 一&#xff1a;功能需求 1.1 商品查询 基于SSM整合基础上完成商品查询&#xff0c;要掌握主面页面main.jsp及商…

机器人技术中的人工智能:问题和解决方案

来源&#xff1a;ScienceAI机器人技术是一个多元化的行业&#xff0c;有很多变数。它的未来充满了不确定性&#xff1a;没有人能预测它未来几年的发展方向和方向。机器人技术也是一个不断增长的领域&#xff0c;有 500 多家公司致力于产品可分为四类&#xff1a;传统工业机器人…

Spring+SpringMVC+Mybatis项目—企业权限管理系统(2)

一&#xff1a;商品查询功能 1.1DAO 1.2业务层 1.3表现层 二&#xff1a;订单查询 1.1DAO 1.2业务层 1.3表现层 三&#xff1a;订单分页 四&#xff1a;Spring Security的使用 五&#xff1a;用户管理 1.1DAO 1.2业务层 1.3表现层 六&#xff1a;角色管理 1.1DA…

任正非最新发言:鼓励胡说八道,系统工程不能搞垄断

来源 : 深城物联6月10日&#xff0c;华为“心声社区”微信公众号披露了任正非5月29日与系统工程领域科学家、专家会谈纪要。在会谈纪要的记录中&#xff0c;任正非分享了他对于系统工程的四方面见解。任正非提到&#xff0c;科学就是无尽的前沿&#xff0c;不要急功近利。国家重…

SpringBoot:如何处理SprintBoot提示Whitelabel Error Page以及了解原因?

目录 QUESTION:如何处理SprintBoot提示Whitelabel Error Page&#xff1f; ANSWER&#xff1a; 一&#xff1a;产生原因 二&#xff1a;如何处理 2.1Whitelabel Error Page 白页 2.2新建controller包 2.3成功运行 三&#xff1a;根本原因分析 QUESTION:如何处理SprintBo…

作为意识计算框架的主动推理

来源&#xff1a;CreateAMind作为意识计算框架的主动推理 &#xff08;机器翻译约八千字&#xff09;摘要最近&#xff0c;主动推理的机械框架被提出作为发展意识的支配性理论的原则基础&#xff0c;这将有助于解决该领域的概念差异(威斯2018&#xff1b;霍维和塞斯2020).为了证…

连接MySql出现异常解决:java.sql.SQLException: The server time zone value is unrecognized or represents。

QUESTION: java.sql.SQLException: The server time zone value &#xfffd;й&#xfffd;&#xfffd;&#xfffd;׼ʱ&#xfffd;&#xfffd; is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the s…

JSP和HTML中实现字符串换行

QUESTION&#xff1a;jsp中String字符串没有换行&#xff1f;怎样将含格式的String保持原有格式输出到html上&#xff1f; ANWSER: 目录 QUESTION&#xff1a;jsp中String字符串没有换行&#xff1f;怎样将含格式的String保持原有格式输出到html上&#xff1f; ANWSER: 方法…

一夜之间,谷歌AI就具有了「人格」,故事还炒得绘声绘色

来源&#xff1a;机器之心虽然谷歌表示不同意&#xff0c;还让提出这种说法的工程师「带薪休假」了。作为AI技术报道者&#xff0c;有点跟不上技术发展的速度了......一夜之间&#xff0c;谷歌AI就具有了人格&#xff0c;并且成功登上国内热搜。而这条消息也成功让众多网友也是…

阿里云服务器重启后无法访问的解决

QUESTION&#xff1a; 阿里云服务器重启后无法访问&#xff0c;可以PING通&#xff1f; ANWSER&#xff1a; 一、配置安全组 二、关闭防火墙 sudo systemctl stop firewalld 临时关闭 sudo systemctl disable firewalld &#xff0c;然后reboot 永久关闭 sudo systemctl s…

21世纪八大新兴技术领域对美国战略威慑的影响

来源&#xff1a;&#xff1a;兰德公司网站平台编辑&#xff1a;黄潇潇编译&#xff1a;沐俭&#xff0c;知远战略与防务研究所 【知远导读】本篇推送节选自兰德公司的报告《打破威慑——审视21世纪科技对战略威慑的影响》&#xff08;Disrupting Deterrence&#xff1a;Examin…

服务器开放特定端口的方法

QUESTION&#xff1a;阿里云服务器CentOS开放特定端口&#xff1f; ANSWER: 1.输入命令 : firewall-cmd --state 查看防火墙的状态。 2.如果上一步处于关闭状态&#xff0c;输入命令&#xff1a; systemctl start firewalld.service 将防火墙开启。 3.开启特定端口xx&#…

让AI做决策,我们的社会准备好了吗?

来源&#xff1a;学术头条随着技术的加速发展&#xff0c;人工智能&#xff08;AI&#xff09;在决策过程中发挥着越来越重要的作用。人类越来越依赖算法来处理信息、推荐某些行为&#xff0c;甚至代表他们采取行动。但是&#xff0c;如果真的让 AI 帮助、甚至代替我们来做决策…

Linux下安装多个Tomcat服务器

目录 QUESTION&#xff1a;阿里云服务器Linux下安装多个Tomcat服务器的方法 ANSWER: 一、安装前的下载相关文件 1.1下载tomcat 1.2准备工具 二、登陆linux服务器进行安装 2.1将安装包上传到服务器 2.2解压和配置 2.3编辑环境变量 2.4生效文件 2.5修改catalina.sh 2.6修…

现在的人工智能是否走上了数学的极端?

来源&#xff1a;知乎—谢凌曦地址&#xff1a;https://www.zhihu.com/question/519393525/answer/2430233113“强基固本&#xff0c;行稳致远”&#xff0c;科学研究离不开理论基础&#xff0c;人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑&#xff0c;为…

JUnit-4.12报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing异常的解决

目录 QUESTION&#xff1a;JUnit-4.12报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing异常的解决&#xff1f; ANWSER: 问题原因&#xff1a; 方法一&#xff1a; 方法二&#xff1a; QUESTION&#xff1a;JUnit-4.12报java.lang.NoClassDefFoundError: or…

谷歌丢弃 TensorFlow:豪赌 JAX

来源&#xff1a;云头条・谷歌是机器学习领域的开拓者&#xff0c;发布了其中一种最早的通用框架TensorFlow。・Meta发布AI框架PyTorch之后&#xff0c;TensorFlow逐渐失去了开发人员的青睐。・如今谷歌内部正押宝在一个取代TensorFlow的新AI项目JAX上。2015年&#xff0c;谷歌…

Lucene基本使用和代码实现

目录 Lucene:全文检索技术 一、Lucene的介绍 1.1背景 1.2优点 1.3Lucene的缺点 1.4全文检索 二、Lucene的基本使用流程 2.1Lucene检索过程 2.2获取文档 2.3分析文档&#xff08;分词&#xff09; 2.4创建索引 2.5查询索引 三、Lucene具体实现 3.1下载 3.2实际开发…

深度学习的坎坷六十年

来源&#xff1a;机器之心编辑&#xff1a;极市平台从1958年弗兰克.罗森布拉特发明的感知机、RNN、LeNet-5到Transformers等等&#xff0c;前人们一步一步的带动着深度学习往前跑。本文主要偏向于计算机视觉方向&#xff0c;带大家回想智慧凝结的每一个里程碑。1958 年&#xf…