如何在Android中加入Spongy Castle JAR?

Nat*_*Fig 27 java android packages bouncycastle spongycastle

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

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

那么最好的解决方法是什么?回答这个问题,表明不应该使用这些包,这个流行的问题甚至没有考虑找到一种方法来获得AWT.那么Spongy Castle如何依赖它们呢?人们正在使用Spongy Castle,对吧?

ua7*_*741 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'

    }
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到最新版本的库.

不要忘记将其作为安全提供程序插入您的应用程序中.

    static {
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}
Run Code Online (Sandbox Code Playgroud)

  • 哪里会添加安全提供程序行?在自定义应用程序类中? (6认同)
  • 就我而言,我已将静态块放入我的自定义应用程序类中,但噩梦发生了。该应用程序总是抱怨 SSL 证书无效并弹出不受信任的连接对话框。我将静态块移动到 Crypto utils 类,问题已解决。 (2认同)

Rob*_*ley 32

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

由于v1.47,海绵城堡已经被划分为独立的子罐恰好反映匹配充气城堡工件(如sc-light-jdk15on.jar,scpg-jdk15on.jar等),并确保你有重要的是所有的你在做什么所需的海绵城堡罐子.

有关依赖关系的完整信息,请访问:

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

至少你需要sc-light-jdk15on.jar(基本轻量级API实现)和可能scprov-jdk15on.jar(围绕轻量级API 的JCE包装器).如果你正在使用Maven,那么所有这些依赖管理的东西都会得到照顾.

您所描述的问题的依存关系javax.mail,javax.activation等等,表明你可能选择了不正确的罐子(如每单库组件之一,而不是"核心供应商"之一) -作为scprov-jdk15on罐子绝对不会有任何那些奇怪的依赖,并在Android上愉快地运行.

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