Android Q充气城堡问题

时间:2019-07-20 10:42:09

标签: android bouncycastle spongycastle

从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();

但是密钥对与上一个不匹配。

图片:code expectation

1 个答案:

答案 0 :(得分:0)

尝试在安全提供程序的第一行插入新的BouncyCastleProvider(),然后从代码中删除所有setprovider(“ BC”)。