22

我的一些代码需要 JCE 无限强度策略文件。我想将此依赖项添加到 Maven Pom 文件中,这样我团队中的其他开发人员就不必分别将其应用到他们的系统中。

我意识到最终部署到的系统需要手动安装 JCE 文件。这只是一个开发解决方案。

我在想我们会将策略文件添加到我们的存储库中,并且 maven 将能够处理安装,但我很惊讶我找不到其他人这样做(以及关于它的博客。)。

4

3 回答 3

15

我找到了这个答案,当谷歌搜索策略 JAR 的 Maven 依赖项并意识到它是特定于 JRE 安装的,因此将其作为 Maven 构建的一部分进行修复仅适用于开发人员,并且仅当您有权访问 /jre/lib/security 文件夹时. 对我来说,以下代码破解效果更好(将其作为您的应用程序所做的第一件事之一):

    try {
        Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
        field.setAccessible(true);
        field.set(null, java.lang.Boolean.FALSE);
    } catch (ClassNotFoundException | NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) {
        ex.printStackTrace(System.err);
    }
于 2013-11-29T13:30:00.313 回答
11

Java 8 安全黑客

    // hack for JCE Unlimited Strength
    Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
    field.setAccessible(true);

    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

    field.set(null, false);
于 2017-01-06T00:50:03.517 回答
6

你可以试试这个:

  • 捆绑 ( zip?) JCE 无限强度策略文件。
  • 将它们作为zip依赖项安装到您的公司存储库中。
  • 使用dependency:unpack目标将创建的依赖项解包${java.home}/jre/lib/security为构建的一部分,例如在initialize(请参阅解包特定工件)期间。
于 2010-08-07T14:24:18.110 回答