我需要把盐放在地穴里吗?

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

这些代码片段在我看来意味着随机生成的 salt 将被丢弃。是这种情况,还是这只是一个误导性的代码片段?

39071 次浏览

盐被合并到散列中(以base64格式编码)。

例如,在传统的Unix密码中,盐存储为密码的前两个字符。其余字符表示哈希值。checker函数知道这一点,并将散列分开以取出盐。