如何使用 Maven 安装 JCE Unlimited Strength 策略文件?

发布于 2024-09-12 20:39:25 字数 206 浏览 5 评论 0原文

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

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

我以为我们会将策略文件添加到我们的存储库中,并且 Maven 将能够处理安装,但令我惊讶的是我找不到其他人这样做(并在博客中介绍它)。

Some code I have requires the JCE unlimited Strength Policy Files. I'd like to add this dependency into the Maven Pom file so the other developers on my team don't have to individually each apply this to their systems.

I realize that the systems this is eventually deployed to will need to have the JCE files manually installed. This is a development solution only.

I was thinking that we would add the policy files to our repository and maven would be able to handle installation, but I am surprised that I can't find anyone else doing this (and blogging about it.).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

怎会甘心 2024-09-19 20:39:25

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

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

I've found that answer, when googling for Maven dependencies for policy JARs and realized that it's JRE installation specific, thus fixing this as part of Maven build will work only for developers and only when you have rights to /jre/lib/security folder. For me the following code hack works much better (invoke this as one of the very first things your application does):

    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);
    }
耳钉梦 2024-09-19 20:39:25

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

Java 8 security hack

    // 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);
万人眼中万个我 2024-09-19 20:39:25

您可以尝试以下操作:

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

You could maybe try this:

  • Bundle (zip?) the JCE unlimited strength policy files.
  • Install them to your corporate repository as a zip dependency.
  • Use the dependency:unpack goal to unpack the created dependency to ${java.home}/jre/lib/security as part of your build, e.g. during initialize (see Unpacking specific artifacts).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文