[英]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.html和https://developer.android.com/guide/topics/security/cryptography#deprecated-functionality
我在Android上的實驗中也確實看到海綿狀城堡可能不需要添加到位置1,因為AndroidOpenSSL現在提供了許多安全算法(就像Security.addProvider(new BouncyCastleProvider());
如果您確實需要一些東西, )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.