程序代碼html
// 設置加密模式爲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); ...
當執行到java
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
時, 若是密鑰大於128, 會拋出java.security.InvalidKeyException: Illegal key size 異常. 由於密鑰長度是受限制的, java運行時環境讀到的是受限的policy文件. 文件位於${java_home}/jre/lib/security, 這種限制是由於美國對軟件出口的控制. oracle
處理辦法: 在官方網站下載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目錄下覆蓋原來文件加密