异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
jdk版本不同,解决方案也有所不一样
以下方案是jdk1.8.0_151后的版本处理方式:
jdk8 和 java9 之后,$JAVA_HOME/jre/lib/security路径下 的 policy 的文件夹有相应的 带限制的jar包 和 不带限制的jar包
“local_policy.jar” 和 “US_export_policy.jar”,也有对应的配置文件 java.security,放开#crypto.policy=unlimited的#号,重新启动java程序即可。
安装路径下的目录:$JAVA_HOME/jre/lib/security
编辑java.security文件,部分内容如下:
# Please note that the JCE for Java SE, including the JCE framework,
# cryptographic policy files, and standard JCE providers provided with
# the Java SE, have been reviewed and approved for export as mass market
# encryption item by the US Bureau of Industry and Security.
#
# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
#
#crypto.policy=unlimited
将 #crypto.policy=unlimited 的注释去掉,重启应用即可