【发布时间】:2017-10-04 13:42:20
【问题描述】:
我正在尝试生成椭圆曲线私钥,但在 android OS 版本 5 和 6 上不断出现此错误。下面是使用 EC 加密生成 PrivateKey 的代码。
private static java.security.PrivateKey createPrivateKey(List<PrivateKey> privateKeys, String appInstallationIdentifier) throws Exception {
PrivateKey privateKey = getPrivateKeyForActivation(privateKeys);
String key = decryptMessage(privateKey.getEncryptedPrivateKey(), appInstallationIdentifier, privateKey.getIv());
key = key.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "")
.replaceAll("\\s", "");
byte[] privateKeyFileContent = decode(key);
KeyFactory keyFactory = KeyFactory.getInstance("EC");
PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(privateKeyFileContent);
return keyFactory.generatePrivate(ks);
}
这是我在操作系统版本 5 和 6 上收到的错误
java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0f06707b:elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP
任何想法为什么我会收到此错误?也应该从 API 级别 11 及更高级别支持 EC,因此使用 EC 应该不是问题。
【问题讨论】:
-
您是否尝试删除私钥中的所有/n?
标签: android security cryptography private-key elliptic-curve