9

如果我正确理解情况,SpongyCastle 是对 BouncyCastle 的重命名,它的创建是为了让人们能够在 Android 上包含新版本的 BouncyCastle,因为仅包含最新的 BouncyCastle jar 会导致与旧版本和精简版本的冲突Android 自带的 BouncyCastle。

但是,显然自 3.0 版(2011 年 - 6 年前!)以来,Android BouncyCastle 包已重命名为com.android.org.bouncycastle,因此现在如果您包含常规org.bouncycastle,这将不再与预先打包的剥离 BouncyCastle 冲突,您可以使用最新版本就是这样。

让我感到困惑的是,SpongyCastle 项目似乎仍然非常活跃,每当我搜索“Android 上的 BouncyCastle”或任何相关内容时,我都会从过去几年中得到很多结果,这些结果建议使用 SpongyCastle,理由是类冲突问题作为推理,即使它们(显然)早在 2011 年就已经解决了。我看到的另一个对我来说更有意义的论点是 SpongyCastle 更向后兼容,因为你不会遇到任何问题运行早于 3.0 的 Android 版本的设备。

所以我的问题是,如果您的目标不是早于 3.0 的 Android 版本,使用 SpongyCastle 胜过 BouncyCastle 是否还有任何好处?

4

1 回答 1

1

这是海绵城堡的作者的:

为什么海绵城堡不会过时?

  • Android 3.0 之前的设备仍在使用中。在较贫穷的国家有更多的使用领域,这些人仍然需要安全的密码学。Signal(据我所知不是 SC 用户)目前仍支持 Android 2.3 及更高版本。
  • 即使在 Android 3.0 之后的设备上,设备制造商也不会随意捆绑库,Bouncy Castle 可能仍会捆绑在一些不起眼的设备上。
  • 尽管与 Android 捆绑的 Bouncy Castle 版本更改了包名称,但它仍然以“BC”作为提供程序名称,在将您自己的 Bouncy Castle 副本添加到应用程序并选择“BC “作为您的提供者。

但他接着指出,Spongy Castle 的发布通常落后于 Bouncy Castle 的发布……原因完全可以理解。


简而言之,对于 Android 设备,使用 Spongy Castle 的唯一可能好处似乎是处理您的应用程序需要最新的 Bouncy Castle 功能但设备制造商捆绑了旧版本的情况。

于 2018-08-25T04:00:14.907 回答