2017-02-17 162 views
0

我怎麼知道如果我從罐子裏使用Bouncy Castle或在Android中使用Bouncy Castle? 我已從https://www.bouncycastle.org/latest_releases.html下載並將jar添加到我的Android Studio項目中。 如何檢查我是否使用它(我下載的那個)?我如何知道從罐子裏使用Bouncy Castle還是在Android中使用Bouncy Castle?

+0

你可以嘗試使用SpongyCastle而不是 – EpicPandaForce

+0

@EpicPandaForce因爲是...請填寫。 –

回答

1

對於至少在過去的幾個版本的Android已經通過重命名他們使用com.android的BouncyCastle的類固定的命名空間衝突。**。我不確定這是什麼時候發生的,但是查看源代碼存儲庫https://android.googlesource.com/platform/external/bouncycastle/+refs表明發生了變化,從冰淇淋三明治開始 - API級別14.

我不確定他們做了什麼,基於服務器的查詢,例如Cipher.getInstance("AES/GCM/PKCS5PADDING", "BC")。但是,JCE中的每個getInstance()方法也有一個可以明確指定Provider類的版本,例如Cipher.getInstance("AES/GCM/PKCS5PADDING", new org.bouncycastle.jce.provider.BouncyCastleProvider()),消除了任何歧義。

1

SpongyCastle是BouncyCastle for Android的官方重新包裝。你應該使用這個包https://rtyley.github.io/spongycastle/

爲什麼?

不幸的是,Android平臺附帶了Bouncy Castle的精簡版本 - 以及被削弱,由於類加載器的衝突,它還使安裝更新版本的庫變得困難。

海綿城堡股票有幾個小的變化充氣城堡庫,使其在Android上工作:

  • 所有程序包名稱已經從org.bouncycastle移動*到org.spongycastle *。

  • ,以避免衝突的類加載器的Java安全API提供商名稱現在是SC,而不是BC

  • 無類名稱變化,所以BouncyCastleProvider類仍然有彈性,不海綿,而是移動到t他org.spongycastle.jce.provider包。

+0

最近的Android版本已將Android使用的bouncycastle類重命名爲com.android.org.bouncycastle。*之類的東西,所以這不再是一個問題,至少對於這些版本來說。 –

+0

@JamesKPolk你能告訴我最近怎麼樣? –

+0

@JamesKPolk查看來源,至少API 17使用您提到的「重構」版本。我相信你的評論也可能是一個答案。 –

相關問題