如何使用 Maven 安装 JCE 无限强度策略文件?

2022-09-02 01:20:36

我拥有的一些代码需要JCE无限强度策略文件。我想将此依赖项添加到 Maven Pom 文件中,以便我团队中的其他开发人员不必单独将其应用于他们的系统。

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

我当时想,我们会将策略文件添加到我们的存储库中,maven将能够处理安装,但我感到惊讶的是,我找不到其他人这样做(并在博客上写博客)。


答案 1

我已经找到了这个答案,当谷歌搜索策略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);
    }

答案 2

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);

推荐