java.lang.IllegalArgumentException: java.security.InvalidKeyException: Illegal key size错误解决

在Java中,默认的加密强度有限(例如,AES密钥长度最多128位)。如果您尝试使用更长的密钥(如256位),而没有安装Java加密扩展(JCE)无限强度管辖权策略文件,就会抛出InvalidKeyException: Illegal key size

错误原因

由于美国出口管制限制,Oracle JDK默认包含的是有限强度的加密策略文件。这意味着:

  • AES加密密钥长度限制在128位
  • RSA加密密钥长度也有限制
  • 其他强加密算法受到限制

当微信支付SDK或其他需要强加密的库尝试使用256位AES加密或更长的RSA密钥时,就会抛出这个异常。

解决方案

安装JCE无限制强度策略文件

对于java8:

  1. 下载JCE策略文件
    从Oracle官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
  • 解压下载的压缩包,得到两个JAR文件:local_policy.jar和US_export_policy.jar

  • 找到JRE安装目录(例如:C:\Program Files\Java\jre1.8.0_111\lib\security),将原来的两个策略文件备份后,用下载的两个jar文件替换。

  • 重启服务

对于java11+

从Java 9开始,默认已经启用无限强度加密,通畅不需要额外安装。

方案2: 使用OpenJDK

OpenJDK通常默认包含无限强度加密策略,可以避免这个问题

posted @ 2025-11-26 14:08  炸天帮李白  阅读(6)  评论(0)    收藏  举报