2013-10-21 153 views
3

当密钥长度为128位时,一切正常。但是当我使用长度为192或256位的密钥时,我得到了以下异常。java.security AES加密密钥长度

java.security.InvalidKeyException: Illegal key size or default parameters 
at javax.crypto.Cipher.a(DashoA13*..) 
at javax.crypto.Cipher.a(DashoA13*..) 
at javax.crypto.Cipher.a(DashoA13*..) 
at javax.crypto.Cipher.init(DashoA13*..) 
at javax.crypto.Cipher.init(DashoA13*..) 

我发现这个Java Security: Illegal key size or default parameters?。但是,我下载了jar文件并将其放入${java.home}/lib/security/之后,我仍然得到相同的异常。

回答

0

您使用的是什么Java实现?

如果你看文档(如here),你可以看到他们可能只支持特定的密钥长度。这个只支持128位。

14

Java默认最大强度为128位。

您需要的是一组名为的文件Java加密扩展(JCE)无限强度管辖策略文件,当前可在Java SE download page处获得。此zip文件包含几个策略瓶,您需要将其复制到JRE的{java.home}/jre/lib/security目录中。

这将让你改变上述128位

+0

的关键力量,但我从http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243下载jar文件.html,并将其放在$ {java.home}/lib/security /下,仍然有异常。 – Cacheing

+0

我只需要将jar放入目录中,对不对? – Cacheing

+0

是的,你需要做的就是把这些jar文件放在运行java程序的JRE的lib/security目录下 –