java.security.InvalidKeyException: Illegal key size

简介: java.security.InvalidKeyException: Illegal key size
SecretKeySpec secretKeySpec = new SecretKeySpec(aesKey, "AES");
Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
IvParameterSpec ips = createCtrIv(nonce);
cipher.init(1, secretKeySpec, ips);    //当代码运行到这一行时就报错了。爆出上面的异常

异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.

解决方案:去官方下载JCE无限制权限策略文件。

jdk 5: 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的下载地址: Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

JDK8的下载地址: JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt

如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件

如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

相关文章
|
9月前
|
Java
解决异常 java.net.URISyntaxException: Illegal character in query at index
解决异常 java.net.URISyntaxException: Illegal character in query at index
519 0
|
2月前
|
存储 Java API
探讨Java中交换Map的Key和Value值的技术
探讨Java中交换Map的Key和Value值的技术
18 2
|
2月前
|
存储 缓存 Java
Java交换map的key和value值
在Java中,直接交换`Map`的key和value是不允许的,因为key是唯一的且不可变。不过,可以通过创建新`Map`实现交换:将原`Map`的value作为新key,key作为新value。注意,如果原`Map`有重复value或null,需额外处理。以下是一个代码示例,展示了如何在value唯一且非null的情况下交换`Map`的key和value。对于重复value或null值的情况,可以使用`List`存储多个key或忽略null值。在实际应用中,`Map`常用于缓存、配置管理、数据库结果映射等多种场景。
39 1
|
10月前
|
安全 算法 Oracle
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
【Java用法】加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
246 0
|
3月前
|
关系型数据库 MySQL Java
解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe
解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe
274 0
|
3月前
|
存储 前端开发 Java
Java【代码分享 13】前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组(将map对象封装成指定entity对象)
Java【代码分享 13】前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组(将map对象封装成指定entity对象)
39 0
|
3月前
|
Oracle Java 关系型数据库
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
213 0
JavaFX-MediaPlayer 参数URI格式问题:java.net.URISyntaxException: Illegal character in path at index X
JavaFX-MediaPlayer 参数URI格式问题:java.net.URISyntaxException: Illegal character in path at index X
|
10月前
|
Java 数据库连接 开发工具
【Java异常】Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred
【Java异常】Spring Boot出现警告 WARNING: An illegal reflective access operation has occurred
255 1
|
6天前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。