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 plain copy
 
  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM