一些开发人员需要将存储从 parse.com 转移到另一台服务器。
当我从解析中导出数据时,我得到了 json 数据。此 json 数据具有加密密码 (bcrypt),例如:
$2a$10$pcR4SaZd3PMD/nXQKMssxupMLncDoFwfU7avg/wdpLVChNqGOXbLu
我试着理解,在这种情况下如何检查用户的密码。
我这样使用 jBcrypt:
import org.mindrot.jbcrypt.BCrypt;
public class Main {
public static void main(String[] args) {
String candidate = "$2a$10$pcR4SaZd3PMD/nXQKMssxupMLncDoFwfU7avg/wdpLVChNqGOXbLu";
String password = "123";
String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
if (BCrypt.checkpw(candidate, hashed)) {
System.out.println("It matches");
}
else {
System.out.println("It does not match");
}
}
}
在这种情况下,密码并不多。但是如果我们去https://www.dailycred.com/article/bcrypt-calculator 并尝试将 BCrypt Tester 与哈希、候选字符串和“123”密码一起使用,一切正常。
我如何理解用户的密码是否与 bcrypt 字符串匹配?
最佳答案
BCrypt.checkpw()
将纯文本密码作为第一个参数,然后对其进行哈希处理并将其与第二个参数 ( docs) 进行比较;在你的情况下,你给它一个已经散列的密码作为它的第一个参数,然后它会再次散列因此它不匹配。
关于java - 如何使用 jBcrypt 检查 bcrypt 密码? (将存储从 Parse.com 移至 Firebase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523233/