作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的应用程序使用 Spring Security。当用户第一次注册时,他们的密码会使用 BCryptPasswordEncoder
进行加密。
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);
现在,在更改密码的情况下,用户输入当前密码,我需要检查当前密码是否与数据库中保存的加密密码相同。
我知道不可能使用 BCryptPasswordEncoder
生成两个具有相同字符串的相同加密哈希。因此,比较密码是否相同的唯一方法可能是获取数据库中保存的原始密码并与当前输入的密码进行比较。
那么,有什么方法可以比较密码或从数据库保存的散列密码中获取原始密码吗?
最佳答案
您只需对照数据库中的编码密码检查原始密码。例如,
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String p = bCryptPasswordEncoder.encode("SomeCoolPassword");
System.out.println(bCryptPasswordEncoder.matches("SomeCoolPassword", p));
关于java - 如何从 BCryptPasswordEncoder 获取原始密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116688/
我是一名优秀的程序员,十分优秀!