原因:java.lang.IllegalArgumentException:盐修订无效
Caused by: java.lang.IllegalArgumentException: Invalid salt revision
当用户从我的 java 注册时,我已经使用 Java 和 Symfony 创建了一个大学项目他可以同时使用 java 和 symfony 登录的应用程序,但相反,这是不可能的,它只能从 symfony 登录,并在 java
中向我显示此错误
Caused by: java.lang.IllegalArgumentException: Invalid salt revision
加密方法:Bcrypt
Security.yml 符号
App\Entity\Utilisateur:
algorithm: bcrypt
encode_as_base64: false
iterations: 1
实用者实体
/**
* Returning a salt is only needed, if you are not using a modern
* hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
*
* @see UserInterface
*/
public function getSalt(): ?string
{
return null;
}
JAVA
登录方式
if (rs.getString("email").equals(t.getEmail()) && BCrypt.checkpw(t.getMotpasse(), rs.getString("motpasse")) == true) {
if (rs.getString("activated").equals("Active")) {
idUser = rs.getInt("idU");
有关此错误检查的详细信息BCrypt.checkpw() Invalid salt version exception
我建议您开始调试以下代码片段:
BCrypt.checkpw(t.getMotpasse(), rs.getString("motpasse"))
在您的数据库中检查散列密码的值是多少。
它是否与 $xy$...
的预期值匹配,其中 xy
应该是 2a
、2b
、2y
或类似的值。
检查您的 Java 代码密码 t.getMotpasse()
和散列密码 rs.getString("motpasse")
的值是什么;记录 them/debug 代码。
确保检查 documentation,确保您以正确的顺序提供 checkpw
的参数(plain, hashed
而不是 hashed, plain
)。
但我怀疑您的 PHP 库生成了您当前的 java 库不支持的较新的 salt 版本(修订版)。例如参见 [=25=]
我能找到的一些 code examples 在 salt 版本不是 2a
时抛出这个异常,这可以解释为什么从 Java 生成的盐有效,但是从 [=56] =] 不要。
在这种情况下,您要么必须:
- 确保 PHP 代码生成盐版本
2a
- upgrade/change 将 Java BCrypt 库升级到支持更新的 salt 修订版的版本
当用户从我的 java 注册时,我已经使用 Java 和 Symfony 创建了一个大学项目他可以同时使用 java 和 symfony 登录的应用程序,但相反,这是不可能的,它只能从 symfony 登录,并在 java
中向我显示此错误Caused by: java.lang.IllegalArgumentException: Invalid salt revision
加密方法:Bcrypt Security.yml 符号
App\Entity\Utilisateur:
algorithm: bcrypt
encode_as_base64: false
iterations: 1
实用者实体
/**
* Returning a salt is only needed, if you are not using a modern
* hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
*
* @see UserInterface
*/
public function getSalt(): ?string
{
return null;
}
JAVA
登录方式
if (rs.getString("email").equals(t.getEmail()) && BCrypt.checkpw(t.getMotpasse(), rs.getString("motpasse")) == true) {
if (rs.getString("activated").equals("Active")) {
idUser = rs.getInt("idU");
有关此错误检查的详细信息BCrypt.checkpw() Invalid salt version exception
我建议您开始调试以下代码片段:
BCrypt.checkpw(t.getMotpasse(), rs.getString("motpasse"))
在您的数据库中检查散列密码的值是多少。
它是否与 $xy$...
的预期值匹配,其中 xy
应该是 2a
、2b
、2y
或类似的值。
检查您的 Java 代码密码 t.getMotpasse()
和散列密码 rs.getString("motpasse")
的值是什么;记录 them/debug 代码。
确保检查 documentation,确保您以正确的顺序提供 checkpw
的参数(plain, hashed
而不是 hashed, plain
)。
但我怀疑您的 PHP 库生成了您当前的 java 库不支持的较新的 salt 版本(修订版)。例如参见 [=25=]
我能找到的一些 code examples 在 salt 版本不是 2a
时抛出这个异常,这可以解释为什么从 Java 生成的盐有效,但是从 [=56] =] 不要。
在这种情况下,您要么必须:
- 确保 PHP 代码生成盐版本
2a
- upgrade/change 将 Java BCrypt 库升级到支持更新的 salt 修订版的版本