當用戶從我的 java 應用程式注冊時,我用Java和Symfony創建了一個大學專案,他可以同時使用 java 和 symfony 登錄,但相反這是不可能的,它只能從 symfony 登錄,它在 java 中向我顯示這個錯誤
Caused by: java.lang.IllegalArgumentException: Invalid salt revision
加密方法:Bcrypt Security.yml Symf
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");
uj5u.com熱心網友回復:
有關此錯誤檢查的更多資訊BCrypt.checkpw() Invalid salt version exception
我建議您開始除錯以下代碼:
BCrypt.checkpw(t.getMotpasse(), rs.getString("motpasse"))
檢查您的資料庫中散列密碼的值是什么。$xy$...它是否與where xyshould be 2a、2b或2y類似的預期值匹配。
檢查您的 Java 代碼密碼t.getMotpasse()和散列密碼的值是什么rs.getString("motpasse");記錄它們/除錯代碼。
確保檢查檔案,您checkpw以正確的順序(plain, hashed而不是hashed, plain)提供引數。
但我懷疑您的 PHP 庫會生成您當前的 java 庫不支持的較新的 salt 版本(修訂版)。參見例如https://github.com/djmdjm/jBCrypt/issues/2
當鹽版本不是時,我可以找到一些代碼 示例2a拋出此例外,這可以解釋為什么從 Java 生成的鹽確實有效,但從 Php 卻沒有。
在這種情況下,您將不得不:
- 確保 PHP 代碼生成鹽版本
2a - 將 Java BCrypt 庫升級/更改為支持較新鹽版本的版本
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478246.html
