1. ホーム
  2. java

[解決済み] bcryptでソルトを保存する必要がありますか?

2022-04-13 01:30:15

質問

bCryptのjavadoc には、パスワードを暗号化する方法についてのコードがあります。

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 

平文のパスワードが以前にハッシュ化されたものと一致するかどうかを調べるには、checkpw メソッドを使用します。

if (BCrypt.checkpw(candidate_password, stored_hash))
    System.out.println("It matches");
else
    System.out.println("It does not match");

これらのコードスニペットは、私には、ランダムに生成された塩が捨てられることを暗示しています。それとも、誤解を招くようなコード・スニペットなのでしょうか?

解決方法は?

ソルトをハッシュに組み込む(base64形式でエンコードする)。

例えば、伝統的なUnixパスワードでは、ソルトはパスワードの最初の2文字として保存されていました。残りの文字がハッシュ値を表します。チェッカー機能はこれを知っており、ハッシュを分解してソルトを取り出します。