安卓验证签名总是返回假



我正在尝试使用 ECDSA 和海绵城堡验证一些签名内容。以下是我用来生成带有 brainpoolP512t1 ec 曲线的密钥对的代码:

public static KeyPair getKeyPairbrainpoolP512t1() throws Exception {
    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "SC");
    ECNamedCurveParameterSpec curveParameterSpec = ECNamedCurveTable.getParameterSpec("brainpoolP512t1");
    keyPairGenerator.initialize(curveParameterSpec, new SecureRandom());
    return keyPairGenerator.generateKeyPair();
}

以下是我用来签名和验证签名的代码:

private byte[] ecdsaSign(ECPrivateKey key, byte[] content) throws Exception {
    Signature ecdsaSign = Signature.getInstance("SHA256withECDSA", "SC");
    ecdsaSign.initSign(key);
    ecdsaSign.update(content);
    byte[] signature = ecdsaSign.sign();
    return signature;
}
public static boolean ecdsaVerify(ECPublicKey key, byte[] content, byte[] signature) throws Exception {
    Signature ecdsaVerify = Signature.getInstance("SHA256withECDSA", "SC");
    ecdsaVerify.initVerify(key);
    ecdsaVerify.update(content);
    boolean result = ecdsaVerify.verify(signature);
    return result;
}

我正在传入使用私钥签名的简单字符串消息的字节数,以及公钥以进行验证。然而,我总是弄假的。我做错了什么?任何帮助都深表感谢。

找出问题所在。我将密钥导出到 PEM,以便在调用符号和验证之前将它们设置为字符串格式,然后解码回私钥原始格式。当我省略此转换并使用私钥直接调用 Verify 时(没有 PEM 字符串来回转换(,内容得到了验证。

相关内容

  • 没有找到相关文章

最新更新