显然Spongy Castle是使用完整版Bouncy Castle的Android替代方案。
然而,在导入jar时我遇到了各种“无法解决”的错误,因为它依赖于Android不包含的软件包,主要是javax.mail,javax.activation和javax.awt.datatransfer。
那么最好的解决方法是什么?对this question和this的回复表明根本不应该使用这些包,this popular question甚至不会考虑找回AWT的方法。那么Spongy Castle如何依赖它们呢? People are using Spongy Castle,对吧?
答案 0 :(得分:39)
如果您使用的是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'
}
您可以找到最新版本的库here。
请勿忘记在应用中将其作为安全提供程序插入。
static {
Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}
答案 1 :(得分:32)
这是两个非常简单的示例,说明如何在项目中包含Spongy Castle:
从v1.47开始,Spongy Castle被拆分为独立的子罐子,完全反映了匹配的Bouncy Castle文物(例如sc-light-jdk15on.jar
,scpg-jdk15on.jar
等),确保你很重要包括所有您正在做的所需的Spongy Castle罐子。
有关依赖关系的完整信息,请访问:
http://rtyley.github.com/spongycastle/#downloads
至少你需要sc-light-jdk15on.jar
(基本轻量级API实现),可能需要scprov-jdk15on.jar
(轻量级API的JCE包装器)。如果你正在使用Maven,那么所有这些依赖管理的东西都会由你来处理。
您在javax.mail
,javax.activation
等上描述的有问题的依赖关系表明您可能选择了一个不正确的jar(例如,每个单库组件,而不是'核心提供者) 'one) - 因为scprov-jdk15on
jar肯定没有拥有任何奇怪的依赖关系,并且在Android上运行愉快。
(免责声明,我是Spongy Castle的维护者,但我也有很多来自其他用户的成功报告!)
答案 2 :(得分:0)
与此同时,可以直接使用BouncyCastle。在更高的Android版本中,内部BC软件包名称已更改,并且至少软件包名称冲突不再是问题,但仍然存在问题。有关解决方案,请查看以下内容:https://stackoverflow.com/a/57897224/3351474