根据https://crypto.stackexchange.com/questions/18105/how-does-recovering-the-public-key-from-an-ecdsa-signature-work, 如果我有签名并且正在签名的消息,我应该能够恢复ECDSA公钥。有没有关于如何使用BouncyCastle和Java获取此信息的示例?如果没有,有人可以告诉我如何实现它的基础知识吗?
如果有帮助,这就是我签署消息的方式:
public static String signData(PrivateKey privateKey, String in) {
Security.addProvider(new BouncyCastleProvider());
String out;
Signature sig;
try {
sig = Signature.getInstance("SHA256withECDSA","BC");
sig.initSign(privateKey);
byte[] inBytes = in.getBytes();
sig.update(inBytes);
byte[] sigFinal = sig.sign();
out = getHex(sigFinal);
} catch (Exception e) {
throw new RuntimeException(e);
}
return out;
}
我想我最大的问题是我不知道java Signatures是如何编码和输出的。如果有人能够阐明它,那将是值得赞赏的。