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被合并到散列中(以base64样式格式编码).
例如,在传统的Unix密码中,salt被存储为密码的前两个字符.其余字符表示哈希值.检查器函数知道这一点,并将哈希值拉开以使盐退出.