【问题标题】:Android: InvalidKeySpecException: elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUPAndroid:InvalidKeySpecException:椭圆曲线例程:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP
【发布时间】: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


【解决方案1】:

在推测设备支持哪些加密算法以及来自哪个版本时,您必须小心。

一些供应商甚至放置了他们自己版本的安全提供程序,这会造成更大的麻烦。 我建议尝试安装您自己的名为 SpongyCastle 的安全提供商,如果您认为这些手机应该支持 EC,您可以查看此处建议的可用算法:

http://mobile.developer.com/ws/android/encrypting-with-android-cryptography-api.html

【讨论】:

    【解决方案2】:

    我想在originx 的回答中添加一些内容。

    我在尝试使用时遇到了完全相同的错误

    KeyAgreement.getInstance("ECDH);
    

    发生在我身上的是我将SpongyCastle 添加为SecurityProvider,这样做:

    Security.addProvider(new BouncyCastleProvider());
    

    对于某些设备,一切都按预期工作,但在其他设备(即 LGE Nexus 5)中,我遇到了完全相同的异常。

    为我解决的问题是改变了我添加 SpongyCastle 的方式:

    Security.insertProviderAt(new BouncyCastleProvider(), 1);
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2012-08-25
      相关资源
      最近更新 更多