簡體   English   中英

在AndroidStudio上使用SpongyCastle Provider

[英]Using SpongyCastle Provider on AndroidStudio

我正在嘗試為我的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的其他功能都可以正常工作,因此我相信我已經成功安裝了該庫。

您使用的是哪個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上的實驗中也確實看到海綿狀城堡可能不需要添加到位置1,因為AndroidOpenSSL現在提供了許多安全算法(就像Security.addProvider(new BouncyCastleProvider());如果您確實需要一些東西, )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM