我如何使用Maven安装JCE Unlimited Strength Policy文件?

Jef*_*tin 21 java maven-2 jce

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

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

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

小智 15

我已经找到了答案,当谷歌搜索策略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);
    }
Run Code Online (Sandbox Code Playgroud)


And*_*kyi 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);
Run Code Online (Sandbox Code Playgroud)


Pas*_*ent 6

你可以试试这个:

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