Java 将Oracle JRE的无限制密钥强度策略文件外部化

Java 将Oracle JRE的无限制密钥强度策略文件外部化,java,aes,jsse,Java,Aes,Jsse,我希望将Oracle JRE中的无限制密钥强度策略JAR具体化。我能够找到IBMJRE的解决方案,但无法找到Oracle JRE的解决方案 下面是IBM的解决方案 非常感谢您在这个主题上提供的帮助。不幸的是,您所尝试的并不是Oracle想要的。查看Java 8 Oracle JCE的代码,可以看到路径是硬编码的: private static void setupJurisdictionPolicies() throws Exception { String javaHome = Sy

我希望将Oracle JRE中的无限制密钥强度策略JAR具体化。我能够找到IBMJRE的解决方案,但无法找到Oracle JRE的解决方案

下面是IBM的解决方案


非常感谢您在这个主题上提供的帮助。

不幸的是,您所尝试的并不是Oracle想要的。查看Java 8 Oracle JCE的代码,可以看到路径是硬编码的:

private static void setupJurisdictionPolicies() throws Exception {
    String javaHome = System.getProperty("java.home");
    String sep = File.separator;
    String path = javaHome + sep + "lib" + sep + "security" + sep;

    File localFile1 = new File(path, "US_export_policy.jar");
    File localFile2 = new File(path, "local_policy.jar");
    ...
“调整”位置的唯一方法是临时修改系统属性
java.home
。然而,这真的是一个黑客

String javaHome = System.getProperty("java.home");
try {
    System.setProperty("java.home", "C:\\Path_to_unrestricted_key_strength_policy_files");
    Class.forName("javax.crypto.JceSecurity");
} finally {
    System.setProperty("java.home", javaHome);
}
将文件放入
C:\\Path\u to\u unrestricted\u key\u strength\u policy\u files\lib\security
。您还需要复制JRE
lib\security
文件夹中的其他文件


注意,必须尽早执行此代码(没有其他线程并行运行),因为策略文件是在类
javax.crypto.JceSecurity
首次加载时加载的。

非常感谢。因此,这意味着我们必须覆盖jre/lib/security文件夹中的默认策略jar文件,以便为加密使用无限制的密钥强度参见我的更新答案。但是请记住,这是一种黑客行为。