代码之家  ›  专栏  ›  技术社区  ›  breakline

Java签名:私钥和证书验证失败

  •  0
  • breakline  · 技术社区  · 4 年前

    我正在尝试使用RSA-SHA256、私钥和证书对数据进行签名和验证:

    私钥是私钥

    公钥通过cert.getPublicKey()从证书中获取;

    protected String sign(String plainText, PrivateKey privateKey, PublicKey publicKey, java.security.cert.Certificate certificate) throws Exception {
            //Sign
            Signature privateSignature = Signature.getInstance("SHA256withRSA");
            privateSignature.initSign(privateKey);
            privateSignature.update(plainText.getBytes(StandardCharsets.UTF_8));
            byte[] signature = privateSignature.sign();
            String result = Base64.getEncoder().encodeToString(signature);
            //Verify
            privateSignature.initVerify(publicKey);
            privateSignature.update(signature);
            boolean bool = privateSignature.verify(signature);
            System.out.println("VERIFIED: "+bool); //Always false
            return result;
        }
    

    问题是,我总是撒谎。

    尽管我在这里测试了相同的证书和私钥:

    https://www.sslshopper.com/certificate-key-matcher.html

    它说我的私钥和证书匹配。

    这里有什么问题?

    0 回复  |  直到 4 年前