项目实战-解决AES(java.security.InvalidKeyException: Illegal key size)
異常: java.security.InvalidKeyException: Illegal key size
今天在做接口測(cè)試的時(shí)候遇到個(gè)異常:
java.security.InvalidKeyException: Illegal key size。
SecretKeySpec secretKeySpec = new SecretKeySpec(aesKey, "AES");Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");IvParameterSpec ips = createCtrIv(nonce);cipher.init(1, secretKeySpec, ips); //當(dāng)代碼運(yùn)行到這一行時(shí)就報(bào)錯(cuò)了。爆出上面的異常感到一臉懵逼,還好網(wǎng)絡(luò)是萬能的,百度一下,簡(jiǎn)單對(duì)比一下,就找到了解決方案。然后測(cè)試之后發(fā)現(xiàn)也是沒有問題的。
異常原因:如果密鑰大于128, 會(huì)拋出java.security.InvalidKeyException: Illegal key size 異常. 因?yàn)槊荑€長(zhǎng)度是受限制的, java運(yùn)行時(shí)環(huán)境讀到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 這種限制是因?yàn)槊绹?guó)對(duì)軟件出口的控制.
解決方案:去官方下載JCE無限制權(quán)限策略文件。
jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
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,將兩個(gè)jar文件放到%JRE_HOME%\lib\security目錄下覆蓋原來的文件
如果安裝了JDK,還要將兩個(gè)jar文件也放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。
然后DuangDuangDuangDuang,就ok了。
總結(jié)
以上是生活随笔為你收集整理的项目实战-解决AES(java.security.InvalidKeyException: Illegal key size)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目实战解决 java.sql.SQLE
- 下一篇: 项目实战-自动生成文档工具