使用Bouncycastle API的RSA密钥生成错误



我有一个非常简单且简短的程序: -

Security.addProvider(new BouncyCastleProvider());
RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
kpg.init(new KeyGenerationParameters(new SecureRandom(), 2048));
kpg.generateKeyPair();

根据Boucnycastle API,因此我应该得到RSA密钥对。相反,我得到了: -

Exception in thread "main" java.lang.ClassCastException: org.bouncycastle.crypto.KeyGenerationParameters cannot be cast to org.bouncycastle.crypto.params.RSAKeyGenerationParameters
at org.bouncycastle.crypto.generators.RSAKeyPairGenerator.init(Unknown Source)

有什么想法?谢谢。

您正在使用特定于提供商的发电机,因此您也必须使用提供商特定参数类。或者,以提供商的独立方式使用JCE API:

KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
gen.initialize(2048, new SecureRandom());
KeyPair kp = gen.generateKeyPair();

这仍然使用Bouncycastle,但所有提供商的特定内容都隐藏在JCE API后面。

最新更新