java - 如何使用 jBcrypt 检查 bcrypt 密码? (将存储从 Parse.com 移至 Firebase)

标签 java parse-platform cryptography firebase bcrypt

一些开发人员需要将存储从 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/

相关文章:

java - 无法增加 TextView 上字符的边框宽度

arrays - Swift Array.contains() 不调用 PFUser 子类的 Equatable 函数

ios - 解析实时查询 "Invalid HTTP upgrade",代码 : 403)

encryption - Cipher 无需编码即可生成 URL 安全密文

java - 检测浏览器区域设置/语言并生成输出

线程中的Java异常 "main"java.lang.RuntimeException : Uncompilable source code - Erroneous tree type:

ios - 将数据从 Parse tableview 传递到 WatchKit

OS X 上的 Java 1.5 加密 - AccessControlException

java - PBKDF2-HMAC-SHA256 for JAVA 的可靠实现

java - 如何在Java中正确读取 "maze.txt"文件