java.security.InvalidKeyException: Illegal key size or default parameters

使用JDK编写加密和机密的程序时会抛出下面的信息:

写道
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]

 解决问题的原文:

写道
Most likely you don't have the unlimited strength file installed now.

You may need to download this file:

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

Extract the jar files from the zip and save them in ${java.home}/jre/lib/security/.

 地址: http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters

下载许可文件的地址:注意自己JDK的版本

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

 

产生上面问题的根本原因:是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。主要是因为JDK的厂商是美国企业。美国对加密和解密的算法和工具有严格的出口限制。

在中国你可以通过上面的链接下载许可文件,把里面的两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来安装目录${java.home}/jre/lib/security/.

这样问题就解决了。

猜你喜欢

转载自kanpiaoxue.iteye.com/blog/2322524