我需要用bcrypt存储盐吗?

bCrypt的javadoc具有如何encryption密码的代码:

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密码中,salt被存储为密码的前两个字符。 剩余的字符表示散列值。 检查器函数知道这一点,并拉开哈希分开盐返回。