JAVA报异常:Illegal key size Exception

当使用256 Bit key时,JAVA由于法律限制默认只支持128 Bit,导致异常。解决方法包括更新`java.security`文件或替换jre中的local_policy.jar和US_export_policy.jar。对于不同JDK版本有不同的操作步骤,例如在JDK1.8.44以上版本只需修改配置,而以下版本则需下载并替换特定策略文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可能原因

因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 但是我们用的是 256 Bit key, java complier 会抛出错误 Illegal key size Exception


解决方法

替换jdk jar包,主要替换jre替换local_policy.jarUS_export_policy.jar

针对jdk1.8.44以上版本

请将jre/lib/security/java.security文件中的
将 #crypto.policy=unlimited
改为 crypto.policy=unlimited
其他不变,也不需要其他权限jar


针对jdk1.8.44以下版本

请将jre/lib/security/ 下 的 local_policy.jar和US_export_policy.jar替换为官方网站提供了JCE无限制权限策略文件的下载:

JDK6的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

JDK7的下载地址:

### 解决 Java `InvalidKeyException`: "Illegal key size or default parameters" 错误 当遇到`java.security.InvalidKeyException: Illegal key size or default parameters`错误时,通常是因为使用的密钥长度超过了默认策略文件允许的最大值[^1]。 #### 密钥大小限制的原因 Java 加密扩展 (JCE) 默认安装的安全策略文件只支持有限强度的加密算法。对于 AES 来说,默认情况下仅支持最大到 128 位的密钥长度。如果尝试使用更长的密钥,则会触发上述异常[^2]。 #### 安装无限制权限策略文件 要解决这个问题,可以下载并替换 JRE 中的标准本地政策 jar 文件为不受限版本: - 访问 Oracle 官方网站获取适用于当前 JDK 版本的 **Unlimited Strength Jurisdiction Policy Files** - 将下载得到的两个 jar 文件覆盖至 `$JAVA_HOME/jre/lib/security` 目录下相应位置[^3] 完成此操作之后重启应用程序应该能够正常使用较大尺寸的密钥而不再抛出该异常。 #### 验证解决方案的有效性 可以通过编写简单的测试程序来验证问题是否已经解决: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class TestAES { public static void main(String[] args)throws Exception{ KeyGenerator kg = KeyGenerator.getInstance("AES"); kg.init(256); // 使用256位密钥 SecretKey sk = kg.generateKey(); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE,sk); System.out.println("Test passed!"); } } ``` 成功运行这段代码意味着现在可以在项目里安全地采用更高强度的加密方式了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值