从API级别28开始,Google限制了安全提供程序功能(弹性城堡问题)。 因此,或者我们使用海绵城堡添加了安全提供程序 现在我们可以生成密钥对了。但是密钥对与前一个不匹配。我们无法获取私钥这是我们以前使用的旧的Codeapi 27:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC", "BC");
SecureRandom random =SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(256, random);KeyFactory kaif = KeyFactory.getInstance("EC", "BC");
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();
在API级别问题之后,我们通过添加以下lineSecurity.insertProviderAt(BouncyCastleProvider(), 1);
来删除了“ BC”并手动添加了Bouncy Castle
通过在依赖项中实现Bouncy Castle,
实施“ com.madgag.spongycastle:core:1.58.0.0”
实施“ com.madgag.spongycastle:prov:1.58.0.0”
但是密钥对与前一个不匹配。
新代码:api 28
Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
keyGen.initialize(256, random);
KeyFactory kaif = KeyFactory.getInstance("EC");
KeyPair pair = keyGen.generateKeyPair();
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();
但是密钥对与上一个不匹配。
图片:
答案 0 :(得分:0)
尝试在安全提供程序的第一行插入新的BouncyCastleProvider(),然后从代码中删除所有setprovider(“ BC”)。