現在、ソルト化されハッシュ化されたパスワードを Web アプリに保存するためのライブラリを探しています。私はmindrotのjbcryptに出くわし、それが正しい選択かもしれないと思います(https://security.stackexchange.com/questions/21184/safe-to-use-jbcrypt-and-recommend-it-to-my-organizationも参照してください) . ただし、コードについて少し困惑することが 1 つあります。一般に、パスワードのハッシュ化とソルト化は、次の呼び出しによって行われます。
String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12));
生成された塩を使用します。後でパスワードを確認するには、ここ(およびマインドロット ページ) で、
if (BCrypt.checkpw(candidate, hashed))
関数は、プレーン テキストの候補で呼び出されます。また、jbcryptのコーディングでは
public static boolean checkpw(String plaintext, String hashed)
ここで私の質問は、比較時にソルトを使用せずに、プレーンテキストのパスワードをソルト+ハッシュ化された文字列と比較するにはどうすればよいですか(明らかにcheckpw関数に渡されないため)?