29

显然Spongy Castle是使用完整版 Bouncy Castle 的 Android 替代品。

但是,在导入 jar 时,我遇到了各种“无法解决”的错误,因为它依赖于 Android 不包含的包,主要是 javax.mail、javax.activation 和 javax.awt.datatransfer。

那么解决这个问题的最佳方法是什么?对这个问题的回答表明根本不应该使用这些包,而且这个流行的问题甚至没有考虑找到让 AWT 恢复的方法。那么海绵城堡是如何依赖他们的呢?人们正在使用海绵城堡,对吧?

4

3 回答 3

44

如果您使用的是 gradle,那么您可以build.gradle像这样在文件中指定您的依赖项:

dependencies {
     ....
    compile 'com.madgag.spongycastle:core:1.54.0.0'
    compile 'com.madgag.spongycastle:prov:1.54.0.0'
    compile 'com.madgag.spongycastle:pkix:1.54.0.0'
    compile 'com.madgag.spongycastle:pg:1.54.0.0'

    }

您可以在此处找到该库的最新版本。

不要忘记将它作为安全提供程序插入您的应用程序。

    static {
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}
于 2015-04-22T03:38:45.510 回答
33

这是两个非常简单的示例,说明如何在项目中包含 Spongy Castle:

自 v1.47 以来,Spongy Castle 已被拆分为单独的子 jar,这些子 jar 完全反映了匹配的 Bouncy Castle 工件(例如sc-light-jdk15on.jarscpg-jdk15on.jar等),重要的是确保包含您正在做的事情所需的所有Spongy Castle jar .

可以在以下位置找到有关依赖项的完整信息:

http://rtyley.github.com/spongycastle/#downloads

至少您将需要sc-light-jdk15on.jar(基本的轻量级 API 实现)和可能scprov-jdk15on.jar(围绕轻量级 API的JCE包装器)。如果您使用的是 Maven,那么所有这些依赖管理的东西都会为您处理好。

javax.mail您在,等上描述的有问题的依赖javax.activation项表明您可能选择了不正确的 jar(例如,每个单一库组件,而不是“核心提供者”) - 因为scprov-jdk15onjar 肯定没有任何那些奇怪的依赖关系,并在 Android 上愉快地运行。

(免责声明,我是 Spongy Castle 的维护者,但我也收到了很多其他用户的成功报告!)

于 2011-08-18T18:27:46.900 回答
0

同时可以直接使用BouncyCastle。在后来的 Android 版本中,内部 BC 包名称已更改,至少包名称冲突不再是问题,但仍然存在问题。有关解决方案,请查看:https ://stackoverflow.com/a/57897224/3351474

于 2019-09-24T16:33:44.217 回答