java - Android Java Bcrypt 库密码与数据库加密密码不匹配
问题描述
所以我知道很多人问为什么他们的加密密码与输入不匹配,但我找不到任何关于我的情况的具体案例。
我在我的 Android Sqlite 项目中使用了https://github.com/patrickfav/bcrypt的 Bcrypt 库。
当我使用他的例子如下:
它记录正常并说密码匹配。但是,当我从另一个使用相同密码的方法调用此验证时,它总是说“假”。有人可以解释一下为什么会发生这种情况,我该如何解决?
String bcryptHashString = BCrypt.withDefaults().hashToString(12, password.toCharArray());
// $2a$12$US00g/uMhoSBm.HiuieBjeMtoN69SN.GE25fCpldebzkryUyopws6
...
BCrypt.Result result = BCrypt.verifyer().verify(password.toCharArray(), bcryptHashString);
// result.verified == true
解决方案
您的问题是每次调用以下行都会生成一个新盐:
String bcryptHashString = BCrypt.withDefaults().hashToString(12, password.toCharArray());
您需要将其存储在某处,然后使用它来验证密码。通过使用新盐,它总是无法通过检查。
推荐阅读
- java - 如何告诉 Jax-Rs 只扫描特定文件夹中的资源
- javascript - 比较 unix 时间戳不返回预期结果 - JAVASCRIPT
- python - Discord 机器人没有响应命令
- reactjs - 将简单的 HTML 脚本转换为 React
- dgl - 当输入是 DGL 中的列表时,DGLGraph.pull 会出错
- javascript - 运行 window.onload 和 setTimeout 不起作用
- python - 如何使 PyGObject 应用程序适合 macOS 上的扩展坞
- swift - 是否有一种通用的方法来处理异步和快速抛出的组合
- domain-driven-design - 如何处理resolvejs中聚合根之间的关系
- java - JSF 状态持有者保护程序内存泄漏