我有一个非常简单且简短的程序: -
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后面。