如何解决Android: InvalidKeySpec异常: elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (404)

以下是我使用的代码:

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);
}

下面是我在OSVersion 5和6上收到的错误:

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0f06707b:elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP
提问于
用户回答回答于

尝试使用

KeyAgreement.getInstance("ECDH);
Security.addProvider(new BouncyCastleProvider());
Security.insertProviderAt(new BouncyCastleProvider(), 1);
用户回答回答于

在假定设备上支持哪种密码算法以及从哪个版本进行加密时,必须小心

一些供应商甚至把他们自己的版本的安全提供者制造了更多的麻烦,建议尝试安装自己的安全提供商

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励