2

我目前正在寻找一个库来在网络应用程序中存储一个加盐的、散列的密码。我遇到了mindrot 的 jbcrypt并认为它可能是正确的选择(另请参阅https://security.stackexchange.com/questions/21184/safe-to-use-jbcrypt-and-recommend-it-to-my-organization) . 然而,有一件事让我对代码有点困惑。通常,通过调用对密码进行散列和加盐处理

String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12));

它使用生成的盐。要稍后检查密码,您可以在此处(以及在 mindrot 页面上)看到

if (BCrypt.checkpw(candidate, hashed))

使用纯文本候选者调用函数。此外,在 jbcrypt 的编码中说

public static boolean checkpw(String plaintext, String hashed)

现在我的问题是如何将纯文本密码与加盐+散列字符串进行比较而在比较时没有加盐(因为它显然没有传递给 checkpw 函数)?

4

0 回答 0