非法密钥大小已安装 Jvm 8 但项目 source/binary 是 jdk7

Illegal key size Jvm 8 installed but project source/binary is jdk7

我正尝试在 Java 上解密,JavaScript 上使用 CryptoJS AES 加密的字符串,如 .

中所述

但我陷入了僵局,我已经安装了 Unlimited Strength Jurisdiction Policy as explained on this post,您只需替换 $javahome/jre/lib/security.[=13= 中已有的 JCE 文件即可]

如果我执行 sudo update-alternatives --config java,我会得到当前的 jvm:

* 2 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 模式手册

所以我要替换位于 /usr/lib/jvm/java-8-oracle/jre/lib/security/.

的文件

我重新启动了计算机以确保 java 重新启动,但我仍然遇到非法密钥大小异常。

该项目在 NetBeans 上,并以 Tomcat 运行,唯一困扰我的是项目的 source/binary 是 JDK 7,我不知道不知道是不是异常的原因

如果是这样,我怎么知道我必须替换哪些 JCE 文件?我不能移动 source/binary,我的意思是,我可以,但我不能在生产中这样做,它必须按原样工作。

如果不是这个原因,我该如何解决这个问题?

您可以使用以下代码片段来帮助调试问题:

Cipher.getMaxAllowedKeyLength("AES"); // Will return 128 in "limited" mode; Integer.MAX_VALUE in "unlimited"

System.getenv("JAVA_HOME"); // Gets the Java home path as set in the OS environment -- in this case should be /usr/lib/jvm/java-8-oracle/
System.getProperty("java.home"); // Gets the JRE home path -- in this case should be /usr/lib/jvm/java-8-oracle/jre

System.getenv("PATH"); // Gets the current PATH variable from the OS environment
System.getProperty("java.class.path"); // Gets the Java classpath

System.getProperty("java.version"); // Gets the JRE version number of the current JVM

将这些语句放入由 Tomcat 执行的 Java 代码中将为您提供有关 Tomcat 是 运行ning 的上下文的信息。您还可以从终端 运行 执行以下命令,以确保您在编辑 JCE USC 管辖策略文件时使用相同的 JRE。

$ echo $JAVA_HOME   # prints the OS' Java home path
$ which java        # prints the java executable that is found in the path

修改这些策略后不需要重启电脑,只需要JRE即可。