我正在开始使用 ECC 加密技术开发 Android 应用程序。我已经看到 Android 嵌入了一些密码学(在此处定义https://developer.android.com/guide/topics/security/cryptography),但它在支持的算法参数或支持的 Android API 版本方面受到限制。例如,AlgorithmParameters 类仅支持“EC”参数(又名椭圆曲线加密),仅适用于 Android API 版本 26+(= Android 8.0 及更高版本),这是非常严格的。
到目前为止,解决方案是使用像“Bouncy Castle”这样的 JCE 提供程序。但是,我在https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html上看到它将在未来的 Android P 中弃用。Android P 将使用加密Conscrypt 中可用的功能(基于boringSSL)。
我希望我的应用程序可以在当前的 Android 版本(>= API 21)上运行,并且我希望它可以在 Android P 上运行,那么我应该使用哪个 JCE 提供程序?
我曾尝试将Conscrypt与运行 Android API 版本 24(= Android 7.0)的三星 Galaxy S7 一起使用,但是当我将其安装为安全提供程序时发生了崩溃。在我的 MainActivity.java 类中,我使用了:
static {
try {
Security.insertProviderAt(Conscrypt.newProvider(), 1);
} catch (NoClassDefFoundError e) {
e.printStackTrace();
}
}
我收到以下崩溃:
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String[] org.conscrypt.NativeCrypto.get_cipher_names(java.lang.String) (试过 Java_org_conscrypt_NativeCrypto_get_1cipher_1names 和 Java_org_conscrypt_NativeCrypto_get_1cipher_1names__Ljava_lang_String_2)
你知道 Conscript 是否可以与当前的 Android API 版本一起使用?
谢谢