java - 在 Android 上使用哪个 JCE 提供程序?充气城堡,Conscrypt,...?
问题描述
我正在开始使用 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 版本一起使用?
谢谢
解决方案
我收到了来自致力于 Conscrypt 的 GoogleGroup 的答复。Conscrypt 文档缺少一些关于如何在 Android 上使用它的说明(现在已修复)。在 Android 上, App/build.gradle 应该包含:
implementation 'org.conscrypt:conscrypt-android:2.5.1'
我有一个“java.lang.UnsatisfiedLinkError”,因为我正在使用:
compile 'org.conscrypt:conscrypt-openjdk:1.1.3:'
这是错误的,因为这一行是针对 OpenJDK 的。
关于更多的事情:有人告诉我,Android 上的 Conscrypt 可以追溯到 API 级别 9(Gingerbread)。
谷歌 GitHub 链接:https ://github.com/google/conscrypt
推荐阅读
- python - Django WizardForm 使用多个表单保存模型
- oauth-2.0 - 将我自己的 IDP(类似于 okta)和 CIAM 集成到 BigCommerce 商店
- python - pandas:导入 csv 并以重复的列名为中心
- owl-api - 使用 OWL-API 和 Pellet 推理器时出现“getInstanceExplanations”问题
- python - 在具有特定目录输入的 shell 脚本中声明 spark 提交(python 脚本)的预期令牌是什么?
- python - 从带有向下滚动的表中抓取 Selenium 数据
- python - SQLAlchemy - 为什么在.query().all() 之后我一直收到对象模型而不是查询的值?
- python - 更改包含大量变量的 netCDF 文件
- asp.net - 带有 asp.net 的 Docker 文件在 Jenkins 中构建时抛出 npm not found 错误
- java - 从字符串数组中删除元素