当前位置: 首页 > 面试题库 >

BCrypt.checkpw()无效的盐版本异常

高山
2023-03-14
问题内容

我正在Play 2.1中尝试使用BCrypt实现身份验证。Java应用程序,但是Invalid salt version exception在尝试对用户进行身份验证时会遇到问题。

这是我的堆栈跟踪

play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Invalid salt version]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
java.lang.IllegalArgumentException: Invalid salt version
at org.mindrot.jbcrypt.BCrypt.hashpw(BCrypt.java:664) ~[jbcrypt-0.3m.jar:na]
at org.mindrot.jbcrypt.BCrypt.checkpw(BCrypt.java:763) ~[jbcrypt-0.3m.jar:na]
at model.operations.DistrictOperations.authenticate(DistrictOperations.java:24) ~[na:na]
at controllers.Application.authenticateDistrict(Application.java:26) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:133) ~[na:na]

我正在使用以下Maven存储库:http
:
//mvnrepository.com/artifact/org.mindrot/jbcrypt/0.3m

我的代码基于文档,因此

district.setPassword(BCrypt.hashpw(json.findPath("password").getTextValue(), BCrypt.gensalt()));

用于保存密码(我还在检查密码是否为空)

BCrypt.checkpw(password, d.getPassword());

为了检查输入的密码是否正确,其中password为String,而d.getPassword()为哈希密码。

我不知道这是否是相关信息,但准确地说,我正在将hibernate用于ORM和PostgreSQL 8.4作为数据库。

我有点被困在这里,所以我问是否有人可以帮助我。比你提前很多。


问题答案:

非常抱歉困扰这个问题。我的代码中只有一个bug,该错误将纯字符串保存到DB中,而不是BCrypted。它是从代码的其他部分完全调用的。



 类似资料:
  • 在我的项目中,我有三个模型文件--用户、约会和通知。有三个存储库接口,每个接口实现CrudRepository。服务类和控制器类也存在。在执行项目时,我得到了两个错误:1。在类路径上未检测到spring Webinitializer。2.创建bean时出现异常。下面是堆栈跟踪: userrepository.class:包com.cl3.model; 导入java.util.List; 导入org

  • 问题内容: 我见过类似的问题,但尚未找到答案。 使用Maven编译,我得到: 这是pom.xml: Javac版本: Java版本: 知道会是什么吗? 问题答案: 您需要将JAVA_HOME设置为jdk7主目录,例如在Microsoft Windows上: “ C:\ Program Files \ Java \ jdk1.7.0_40” 或在OS X上: /图书馆/Java/JavaVirtua

  • 我与Gradle在IntelliJ中创建了一个新的Java项目,该项目使用Java 17。运行我的应用程序时出现错误。 我的设置 我已经通过安装了,并将其设置为我的。 已设置为。 在

  • 使用maven compile,我得到: 下面是pom.xml: Javac版本: 知道可能是什么吗?

  • 问题内容: 我们的构建服务器运行Jenkins 1.502,并将Subversion插件升级到1.45版。此插件使用。 另外,我们还安装了SVN客户端1.7.8。 Jenkins已成功从SVN信息库检出源代码。但是当我进入工作区目录并尝试手动运行一些svn命令时,它失败了: 错误消息表明工作副本是由SVN 1.4创建的,但是svnkit的版本是1.7.6。怎么会这样? 我搜索了整个文件系统,没有其

  • 我们的构建服务器运行Jenkins 1.502,Subversion插件升级到1.45版。该插件使用<code>svnkit-1.7.6-Jenkins-1.jar。 我们还安装了SVN客户端1.7.8。 Jenkins成功地从SVN存储库中签出了源代码。但当我转到工作区目录并尝试手动运行一些svn命令时,它失败了: 错误消息指示工作副本是由 SVN 1.4 创建的,但 svnkit 的版本是 1