AES加密时的 java.security.InvalidKeyException: Illegal key size 异常
2015-12-19 02:06
741 查看
程序代码
当执行到
时, 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
处理办法: 在官方网站下载JCE无限制权限策略文件
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
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
// 设置加密模式为AES的CBC模式 Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES"); IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16); cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv); // 加密 byte[] encrypted = cipher.doFinal(unencrypted); ...
当执行到
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
时, 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
处理办法: 在官方网站下载JCE无限制权限策略文件
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
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
相关文章推荐
- SpringMVC在Servlet3.0下上传文件的示例
- Java 备忘与总结
- 如何正确的挂起一个线程(为什么suspend被弃用)
- Java之MySQL 存储过程【整理】
- Spring AOP初级入门-关于唠叨的
- HDU 1002 a+b(高精度+java)
- 从Eclipse转向IntelliJ Idea
- java Serializable和Externalizable序列化反序列化详解
- 大学毕业选择蜂窝教育Java培训,月薪7.3K
- MyEclipse 使用心得体会
- java实现泛型顺序栈
- java实现泛型队列
- java实现循环队列(顺序队列)
- eclipse 安装svn插件
- Spring的简单注入
- javaWeb的XML-pull解析。
- java之正则表达式详解
- eclipse导入myeclipse中的web项目
- Android实战(五)------Myeclipse新建运行Android项目
- Android实战(五)------Myeclipse新建运行Android项目