2017-02-17 165 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使用您提到的“重构”版本。我相信你的评论也可能是一个答案。 –

相关问题