jBCrypt只是将盐添加到哈希中

时间:2016-09-28 19:09:34

标签: hash bcrypt

我第一次使用jBCrypt,我不是在我的项目中使用Spring,并且不希望那个沉重的库只用于一件简单的事情,BCrypt。

我的理解是盐腌哈希涉及将盐与密码结合,然后对其进行哈希处理。但是,使用这个库的结果表明,最终的哈希似乎基本上是预先设置为哈希的盐。

这是我的测试代码:

public static void main(String[] args) throws Exception{
    String salt = BCrypt.gensalt();
    System.out.println("SALT: " + salt);
    String pass = "passwordpasswordpassword";
    String hash = BCrypt.hashpw(pass, salt);
    System.out.println("HASH: " + hash);
}

这是输出:

SALT: $2a$10$gJ9JwqTC0jNJEhX3IUl7je
HASH: $2a$10$gJ9JwqTC0jNJEhX3IUl7jeo18wnF1AgMjQha78sFA/c5Mubx49j6q

这让我感到奇怪。我想知道我是否使用了错误的库,或者我只是误解了BCrypt的工作方式。

1 个答案:

答案 0 :(得分:1)

是的,这是BCrypt的预期行为。没有必要保持盐的安全。它的用户特定性非常重要。 BCrypt.checkpw函数在内部需要salt,以便能够计算用户输入的密码的哈希值,并将其与您存储的哈希值进行比较。

另见:https://security.stackexchange.com/questions/17421/how-to-store-salt