【发布时间】:2019-07-20 10:42:09
【问题描述】:
从 API 级别 28 开始,Google 限制了安全提供程序功能(充气城堡问题)。 因此,或者我们使用海绵城堡添加了安全提供程序 现在我们可以生成一个密钥对。但密钥对与前一个不匹配。 We can't get Private key这是我们之前使用的,旧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 级别问题之后,我们已删除“BC”并通过添加以下 lineSecurity.insertProviderAt(BouncyCastleProvider(), 1); 手动添加 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();
但密钥对与前一个不匹配。
图片:
【问题讨论】:
-
您的问题不够清楚,请阅读minimal reproducible example并相应地编辑您的问题
-
好的,让我添加示例
-
请参阅此答案以获取完整示例:stackoverflow.com/a/66323575/215266
标签: android bouncycastle spongycastle