gpt4 book ai didi

java - Android 验证签名总是返回 false

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:54 25 4
gpt4 key购买 nike

我正在尝试使用 ECDSA 和 spongycaSTLe 验证一些签名内容。这是我用来生成带有 BrainpoolP512t1 ec 曲线的 key 对的代码:

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;
}

我正在传递使用私钥和公钥签名的简单字符串消息的字节以进行验证。然而我总是变得虚假。我究竟做错了什么?非常感谢任何帮助。

最佳答案

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

关于java - Android 验证签名总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48309124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com