2017-10-04 4 views
0

楕円曲線の秘密鍵を生成しようとしていますが、アンドロイドOSバージョン5と6でこのエラーが発生します。以下は、EC暗号化でPrivateKeyを生成するコードです。Android:InvalidKeySpecException:楕円曲線ルーチン:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP

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

そして、ここで私は、このエラーが発生する理由を、私はOSのバージョン5および6

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0f06707b:elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP 

任意のアイデアに受信エラーがありますか?また、ECはAPIレベル11以上からサポートされるはずですので、ECを使用することは問題ではありません。

答えて

0

デバイス上でどの暗号アルゴリズムがサポートされているかを推測する際には、注意が必要です。

ベンダーによっては、セキュリティプロバイダの独自のバージョンを配置しても、より多くの問題が生じます。私は、独自のセキュリティプロバイダをインストールする試しをお勧めし はSpongyCastleと呼ばれ、あなたはECは、これらの電話機でサポートされるべきであると信じている場合は、ここで提案のように使用可能なアルゴリズムを確認することができます。

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