我正在尝试为我的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'敬我的gradle。
我尝试了不同的提供程序名称(如"BC"),但都给出了相同的错误“NoSuchProviderException”。
我试着到处阅读都没有成功,请告诉我我做错了什么,还有什么我应该做的。
谢谢!
PS不用说,SpongyCastle的其他功能运行正常,所以我相信我已经成功地安装了库。
发布于 2019-08-29 16:24:31
您使用的是哪个API版本?Google改变了插入和使用安全提供程序的行为。我对你的问题没有一个实际的答案,但看起来就是这样。
谷歌表示,由于Android P在内部更倾向于使用AndroidOpenSSL作为安全提供商,他们不推荐使用一些BC提供商的功能。对给定的提供程序使用getInstance() (例如"BC“或"SC")将抛出针对Android P或更高版本的应用程序的NoSuchAlgorithmException。
他们建议在getInstance()中不使用显式提供程序。
请参阅https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html和https://developer.android.com/guide/topics/security/cryptography#deprecated-functionality
此外,我在安卓上的实验中也看到,海绵城堡可能不需要添加到位置1,因为AndroidOpenSSL现在提供了很多安全算法(如果你真的需要一些东西,就使用Security.addProvider(new BouncyCastleProvider()); )。
https://stackoverflow.com/questions/54331661
复制相似问题