最近,负责公司的数据加密模块。采用的算法是AES的CBC模式,密钥长度为256位。
想来,也没啥难的。Java的接口那么多,AES的算法接口也肯定有!想来没啥难的,但是却耗费了我两天时间才解决这个问题。
JDK和MyEclipse(包括Eclipse)自带的Jar包是不支持256位密钥长度的。如果初始化密钥的时候,长度设置为32字节(256位),就会抛出下面异常。
在网上搜了很久,说JDK自带jar包不支持256位AES加密,需要到官网上下载下面两个jar包:
很多网友说将JAVA_HOME/jre/lib/security下的这两个jar包替换掉;我试过了,但是还是报“Illegal key size”的错误。此外,很多网友也同样这样做了,还是不行。这个问题困扰了我两天。后来,我恍然大悟:我是在MyEclipse10下进行的代码编写,它自己导入了一些jar包(JRE System Libary)。我将jce.jar的路径拷贝下来,转入该路径——果然找到了security这个文件夹——果断,直接将那两个让人DT的jar包直接覆盖掉!!Ok!代码通过了!不过,若你导入的是jdk的jar包,就需要替换JAVA_HOME下的那两个文件。
Jdk6下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
Jdk7下载地址: