请尝试以下操作:
// add instance of provider classSecurity.addProvider(new BouncyCastleProvider());String name = "secp256r1";// NOTE just "EC" also seems to work hereKeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDH", BouncyCastleProvider.PROVIDER_NAME);kpg.initialize(new ECGenParameterSpec(name));// Key pair to store public and private keyKeyPair keyPair = kpg.generateKeyPair();Cipher iesCipher = Cipher.getInstance("ECIES", BouncyCastleProvider.PROVIDER_NAME);iesCipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());请注意,通常,在尝试通过JCE使用Bouncy时,最好保留JCE类而不是Bouncy Castle类。在这种情况下,问题可能出在提供给密钥生成器的参数上。
在上面的代码中,我使用了,
BouncyCastleProvider.PROVIDER_NAME但是
"BC"当然可以很好地工作。尽管应该不影响最终结果,但每次都重新初始化提供者不是一个好主意。
确保您具有最新的系统来运行此代码。该代码已在以下系统上经过测试:
--- runtime information --- Properties: java.vendor : Oracle Corporation java.specification.name : Java Platform API Specification java.specification.version : 1.8 java.runtime.name : Java(TM) SE Runtime Environment java.runtime.version : 1.8.0_65-b17 java.vm.name : Java HotSpot(TM) 64-Bit Server VMUnlimited crypto: yes --- info for provider Bouncy Castle --- Bouncy Castle version: 1.520000Bouncy Castle provider registered: yes



