背景:在使用 SHA256withRSA算法进行加密时,报java.security.InvalidKeyException: Illegal key size错误,而本地开发时没有问题
解决方式:
进入到 JDK的安装目录下,再进入 /jre/lib/security
目录,看该目录下是有一个 policy 文件夹,还是有两个jar包:local_policy.jar,US_export_policy.jar
第一种情况:有 policy文件夹(说明此版本为 JVM启用 无限制强度管辖策略)
在当前文件夹中,找到 java.security
文件
使用文本编辑器打开后,找到 crypto.policy 属性(默认应该是被注释的),它可以有两个值:limited(默认)和unlimited
#crypto.policy=unlimited
取消注释(删除 # ),以此来启用无限制
crypto.policy=unlimited
第二种情况:有 local_policy.jar和 US_export_policy.jar 两个jar包,没有 policy文件夹
去官网下载 JCE无限制权限策略文件
-- JDK5
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
-- JDK6
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
-- JDK7
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
-- JDK8
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压,会看到 local_policy.jar, US_export_policy.jar ,readme.txt 三个文件
将这两个jar放到 %JAVE_HOME%\jre\lib\security
目录下覆盖原来文件
错误原因:对数据进行加密时,如果是 128位密钥加解密,那无需做什么特殊处理;但是如果使用 256位密钥进行加解密时,如果不进行特殊处理,可能会因为 JDK版本的问题出现 java.security.InvalidKeyException: Illegal key size 这个异常
原理: