您的位置:首页 > 编程语言 > Java开发

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

2013-12-23 17:27 603 查看
国内私募机构九鼎控股打造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

public class Test {

public static void main(String[] args) throws Exception {

KeyGenerator keyGen = KeyGenerator.getInstance("AES");

keyGen.init(256);

SecretKey key = keyGen.generateKey();

ObjectOutputStream oop = new ObjectOutputStream(new

FileOutputStream("c:\\key.dat"));

oop.writeObject(key);

oop.close();

String strTest = "Hello, Jason";

byte[] strAfterAES = encryptData(strTest.getBytes());

System.out.println(new String(strAfterAES));

byte[] strOriContent = decryptData(strAfterAES);

System.out.println(new String(strOriContent));

}

public static byte[] encryptData(byte[] input) throws Exception {

ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:\\key.dat"));

SecretKey aeskey = (SecretKey) in.readObject();

Cipher c1 = Cipher.getInstance("AES");

c1.init(Cipher.ENCRYPT_MODE, aeskey);

byte[] cipherByte = c1.doFinal(input);

return cipherByte;

}

public static byte[] decryptData(byte[] input) throws Exception {

ObjectInputStream in = new ObjectInputStream(new FileInputStream("c:\\key.dat"));

SecretKey aeskey = (SecretKey) in.readObject();

Cipher c1 = Cipher.getInstance("AES");

c1.init(Cipher.DECRYPT_MODE, aeskey);

byte[] clearByte = c1.doFinal(input);

return clearByte;

}

}

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: