195

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");

これらのコードスニペットは、ランダムに生成されたソルトが破棄されることを意味します。これは事実ですか、それともこれは単なる誤解を招くコードスニペットですか?

4

1 に答える 1

221

ソルトはハッシュに組み込まれます(base64スタイルの形式でエンコードされます)。

たとえば、従来のUnixパスワードでは、ソルトはパスワードの最初の2文字として保存されていました。残りの文字はハッシュ値を表しています。チェッカー関数はこれを認識しており、ハッシュを分解してソルトを元に戻します。

于 2008-11-10T04:33:24.197 に答える