【问题标题】:Using SpongyCastle Provider on AndroidStudio在 Android Studio 上使用 SpongyCastle 提供程序
【发布时间】:2019-08-29 17:24:27
【问题描述】:

我正在尝试为我的 android 应用程序编写 ECDH 代码。 作为一个起点,我设法在我的 AndroidStudion 上安装了 lSpongyCastle Jar,但现在我在运行时遇到了问题:

KeyPairGenerator aliceKeyGen = KeyPairGenerator.getInstance("ECDH", "SC");

一直说没有这样的提供者,不过我加了

  Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);

到我的代码中,我已经添加了

implementation 'com.madgag.spongycastle:prov:1.58.0.0'

给我的毕业生。

我尝试了不同的提供者名称(例如“BC”),但都给了我相同的错误“NoSuchProviderException”

我尝试到处阅读都没有成功,请让我知道我做错了什么以及我应该做什么。

谢谢!

PS 不用说,SpongyCastle 的其他功能都正常工作,所以我相信我已经成功安装了该库。

【问题讨论】:

    标签: android android-studio spongycastle


    【解决方案1】:

    您使用的是哪个 API 版本? Google 改变了插入和使用安全提供程序的行为。对于您的问题,我没有实际答案,但看起来是这样。

    Google 声明自 Android P 以来,更喜欢 AndroidOpenSSL 作为内部安全提供程序,并且他们弃用了一些 BC 提供程序功能。将 getInstance() 与给定的提供程序(例如“BC”或“SC”)一起使用将引发针对 Android P 或更高版本的应用程序的 NoSuchAlgorithmException。

    他们建议不要在 getInstance() 中使用显式提供程序。

    https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.htmlhttps://developer.android.com/guide/topics/security/cryptography#deprecated-functionality

    另外,我在 Android 上的实验中确实看到,spongycastle 可能不需要添加到位置 1,因为 AndroidOpenSSL 现在提供了很多安全算法(如果你真的需要一些东西,就做Security.addProvider(new BouncyCastleProvider());)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多