我一直在用 BouncyCastle 的加密库和 RSA 的加密库做一些简单的测试。我正在做的是生成一个私钥/公钥对,如下所示:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", "JsafeJCE");
kpg.initialize(new ECGenParameterSpec("secp384r1"));
KeyPair kp = kpg.genKeyPair();
PrivateKey priv = kp.getPrivate();
PublicKey pub = kp.getPublic();
然后我像这样生成签名
Signature sig = Signature.getInstance("SHA384/ECDSA","BC");
我尝试签署私钥:
sig.initSign(priv);
所有这些都让我犯了错误:
java.security.InvalidKeyException:无法识别基于 ECDSA 的签名者中的密钥类型
当我 BC 和 JsafeJCE 时,我没有收到任何错误,一切都很好。如果两个提供商都是 BC,也可以使用。那么为什么我不能用 BC lib 对 JsafeJCE 生成的密钥进行签名呢?