在AndroidStudio上使用SpongyCastle Provider

时间:2019-01-23 16:28:48

标签: android android-studio spongycastle

我正在尝试为我的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的其他功能都可以正常工作,因此我相信我已经成功安装了该库。

1 个答案:

答案 0 :(得分:-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上的实验中确实看到,由于AndroidOpenSSL现在提供了许多安全算法(如果您确实需要其中的一些东西,只需Security.addProvider(new BouncyCastleProvider());),可能不需要在位置1处添加海绵城堡。