java - 如何在java中检查密码是否是BCrypt编码的

标签 java spring bcrypt

我正在将一个用户对象绑定(bind)到 Spring Controller 的 POST 请求中。在该对象中有一个密码字段。我想检查该文件是否经过 BCrypt 编码,因为保存和更新这两个事件都映射到同一 Controller 。知道这怎么可能吗?

代码片段:

@RequestMapping(value = "/save", method = RequestMethod.POST)
public String saveUser(Model model, @Validated @ModelAttribute("user") SystemUser user, BindingResult result) {

}

最佳答案

根据 Spring 的 BCryptPasswordEncoder 类,您可以使用此正则表达式模式检查字符串是否已编码

Pattern BCRYPT_PATTERN = Pattern.compile("\\A\\$2a?\\$\\d\\d\\$[./0-9A-Za-z]{53}");

if (BCRYPT_PATTERN.matcher(stringToCheck).matches()) {
    // stringToCheck is an encoded bcrypt password.
}

关于java - 如何在java中检查密码是否是BCrypt编码的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292677/

相关文章:

java - HTTP Status 500 - 请求处理失败;嵌套异常是 org.hibernate.HibernateException : No Hibernate Session bound to thread

java - 我应该用种子为我的 BCryptPasswordEncoder 初始化 SecureRandom 吗?

java - 是否支持带有连接的接收器和源主题相同的Kafka Stream?

java - 由于 ClosedChannelException (DFSOutputStream.checkClosed) 而导致的 Spark 作业失败

java - 从 Jar 或批处理文件执行 Java 运行应用程序

java - Spoj 上的代码提交出现运行时错误 (NZEC)

java - 我应该在 spring 中为我的项目使用注释吗?

java - 解析 JUnit 测试中的 Spring @Value 表达式

ruby - bcrypt-ruby 不会与 bundler 一起安装,但与 gem install 一起工作正常

php - 注册时密码错误,但通过 bcrypt 更改密码后可以使用