java中的AES 256算法遇到 Illegal key size or default parameters错的解决办法

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为中国PE第一股,市值超1000亿元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

报错堆栈如下:

 

Caused by: java.security.InvalidKeyException:Illegal key size or default parameters
    at javax.crypto.Cipher.a(DashoA13*..)~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..)~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..)~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..)~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..)~[na:1.6]
    at my.package.Something.decode(RC4Decoder.java:25)~[my.package.jar:na]

 

 

Google到问题原因,链接地址如下:

http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters

根据回答找到下载新jar包链接地址如下:

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

把里面的两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来安装目录C:\Program Files\Java\jre6\lib\security 下的两个jar包接可以了

然后就重新运行程序,不会报错了,测试代码如下:

 

[java] view plaincopy

 

  1. public class Test {  
  2.     public static void main(String[] args) throws Exception {  
  3.          KeyGenerator keyGen = KeyGenerator.getInstance("AES");  
  4.          keyGen.init(256);  
  5.          SecretKey key = keyGen.generateKey();  
  6.          ObjectOutputStream oop = new ObjectOutputStream(new  
  7.          FileOutputStream("c:\\key.dat"));  
  8.          oop.writeObject(key);  
  9.          oop.close();  
  10.           
  11.         String strTest = "Hello, Jason";  
  12.         byte[] strAfterAES = encryptData(strTest.getBytes());  
  13.         System.out.println(new String(strAfterAES));  
  14.         byte[] strOriContent = decryptData(strAfterAES);  
  15.         System.out.println(new String(strOriContent));  
  16.     }  
  17.   
  18.   
  19.     public static byte[] encryptData(byte[] input) throws Exception {  
  20.         ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:\\key.dat"));  
  21.         SecretKey aeskey = (SecretKey) in.readObject();  
  22.         Cipher c1 = Cipher.getInstance("AES");  
  23.         c1.init(Cipher.ENCRYPT_MODE, aeskey);  
  24.         byte[] cipherByte = c1.doFinal(input);  
  25.         return cipherByte;  
  26.     }  
  27.   
  28.   
  29.     public static byte[] decryptData(byte[] input) throws Exception {  
  30.         ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:\\key.dat"));  
  31.         SecretKey aeskey = (SecretKey) in.readObject();  
  32.         Cipher c1 = Cipher.getInstance("AES");  
  33.         c1.init(Cipher.DECRYPT_MODE, aeskey);  
  34.         byte[] clearByte = c1.doFinal(input);  
  35.         return clearByte;  
  36.     }  
  37. }  

 

BTW:

 If ur JVM is IBM JVM pls refer to the below link to update the unlimited key size jars

http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.multiplatform.doc%2Finfo%2Fae%2Fae%2Ftwbs_tunev6wss.html

时间: 2024-07-29 07:36:15

java中的AES 256算法遇到 Illegal key size or default parameters错的解决办法的相关文章

java.security.InvalidKeyException: Illegal key size or default parameters怎么改

问题描述 AES加密解密时抛出java.security.InvalidKeyException:Illegalkeysizeordefaultparameters

抛出java.security.InvalidKeyException: Illegal key size or default parameters 怎么修改

问题描述 AES加密解密时抛出java.security.InvalidKeyException:Illegalkeysizeordefaultparameters要如何改 解决方案 解决方案二:这个应该是密钥大于2的7次方了.

SymmetricDS加密symmetric.properties中数据库密码产生"Illegal Key Size"错误

根据symmetricDS的guide文档,想要加密symmetric.properties中的db.password,需要跑以下命令: sym -p E:\someplace\symmetric.properties -e dbpassword 中文版的JDK会出现"Illegal Key Size" 错误, 这是由于美国对加密的进出口限制,不允许高于56位的加密, 可以从ORACLE网站下一个无限制的JCE版本, 覆盖原JDK中security目录下的文件. 名字是Java Cry

图文讲解Java中实现quickSort快速排序算法的方法_java

相对冒泡排序.选择排序等算法而言,快速排序的具体算法原理及实现有一定的难度.为了更好地理解快速排序,我们仍然以举例说明的形式来详细描述快速排序的算法原理.在前面的排序算法中,我们以5名运动员的身高排序问题为例进行讲解,为了更好地体现快速排序的特点,这里我们再额外添加3名运动员.实例中的8名运动员及其身高信息详细如下(F.G.H为新增的运动员): A(181).B(169).C(187).D(172).E(163).F(191).G(189).H(182) 在前面的排序算法中,这些排序都是由教练主

java报表工具FineReport使用中遇到的常见报错及解决办法

关于java报表工具FineReport常用函数的用法及示例,请点击.http://www.111cn.net/jsp/Jsp-Servlet/83901.htm (一)  1.address pool is full: 含义:地址池满,连接数超过并发数上限. 解决办法: 若在FineReport的连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(processes)达到上限导致的,可增大数据库中的连接数目来解决此问题.如下在数据库中修改最大连接数: Sel

Java中CRC-16-CCITT校验码算法一些实例

项目需要上传数据到另外一个政府系统,政府部门沟通困难啊,在网上找了N个方法测试计算的结果都对不上. 最终终于找到了一个终极解决方法,找到一个国外的源码类基本上对所有的CRC模型都有现成的计算方法,稍作修改如下:  代码如下 复制代码 package com.grt.michael.network.communicate.server_zhujianbu;   public class testcrc {     final byte P_8_ATM = (byte) 0x07;     fina

java中全排列的生成算法汇总_java

  全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来.任何n个字符集的排列都可以与1-n的n个数字的排列一一对应,   因此在此就以n个数字的排列为例说明排列的生成法.   n个字符的全体排列之间存在一个确定的线性顺序关系.所有的排列中除最后一个排列外,都有一个后继:除第一个排列外,都有一个前驱.每个排列的后继都可以从它的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方法.   全排列的生成法通常有以下几种:   字典

java中实现希尔排序算法

package Utils.Sort; /**   *希尔排序,要求待排序的数组必须实现Comparable接口   */   public class ShellSort implements SortStrategy   {   private int[] increment; /**   *利用希尔排序算法对数组obj进行排序   */   public void sort(Comparable[] obj)   {   if (obj == null)   {   throw new N

【Java】Java中几种排序算法

package javaArray; import java.sql.Date; public class A2 { public static void main(String[] args) { int a[] = new int[5]; Date[] days = new Date[3]; System.out.println(a[3]); System.out.println(days[2]); int[] data = new int[] {3, 9, 2, 8, 7, 0, 4, 6