【问题标题】:How to include the Spongy Castle JAR in Android?如何在 Android 中包含 Spongy Castle JAR?
【发布时间】:2011-10-17 10:44:53
【问题描述】:

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

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

那么解决这个问题的最佳方法是什么?对this questionthis 的回复表明根本不应该使用这些包,this popular question 甚至没有考虑找到一种方法来恢复 AWT。那么海绵城堡是如何依赖他们的呢? People are using Spongy Castle,对吧?

【问题讨论】:

    标签: java android packages bouncycastle spongycastle


    【解决方案1】:

    如果您使用的是 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);
    }
    

    【讨论】:

    • 在哪里添加安全提供者行?在自定义应用程序类中?
    • 是的,我们已经在自定义类中添加了这个。每当引用该类实例时,都会插入提供程序。确保您要在其中插入它的类是您的加密操作的入口点。
    • 就我而言,我已将静态块放入我的自定义应用程序类中,但噩梦发生了。该应用程序总是抱怨无效的 SSL 证书并弹出不受信任的连接对话框。我将静态块移至 Crypto utils 类,问题已修复。
    • 谢谢@LoganGuo。我认为 AndyRoid 的问题被误解了。
    【解决方案2】:

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

    自 v1.47 起,Spongy Castle 已拆分为单独的子 jar,这些子 jar 完全反映了匹配的 Bouncy Castle 工件(例如 sc-light-jdk15on.jarscpg-jdk15on.jar 等),确保您包含 非常重要所有你正在做的事情所需的海绵城堡罐子。

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

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

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

    您在javax.mailjavax.activation 等上描述的有问题的依赖项表明您可能选择了不正确的 jar(例如,every-single-library-component 一个,而不是“核心提供者”一个)-因为scprov-jdk15on jar 绝对没有有任何这些奇怪的依赖项,并且在 Android 上运行愉快。

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

    【讨论】:

    • 问题是,我相信这正是我使用的 JAR 文件。我去了github.com/rtyley/spongycastle并点击了“下载”子标题下的“您可以直接在此处下载最新的jar”链接。不幸的是,我不再从事该项目,所以我不太可能有机会很快再试一次 - 但为了其他人,将您的 JAR 文件包含在 Android 项目中的推荐步骤是什么?
    • 我添加了你的库,但它仍然抛出 bouncycastle.ans1 类没有找到的异常类加载。如何让它在 spongycastle 中搜索?
    • 如何从这个链接github.com/rtyley/spongycastle添加lib ..没有jar文件...
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多