当密钥长度为128位时,一切正常。但是当我使用长度为192或256位的密钥时,我得到以下异常。
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 :(得分:14)
Java的默认最大强度为128位。
您需要的是一组名为 Java密码术扩展(JCE)无限强度管辖权政策文件的文件,目前可在Java SE download page获取。此zip文件包含几个策略jar,您需要将其复制到JRE的 {java.home} / jre / lib / security 目录中的那些策略jar的顶部。
这样可以将密钥强度更改为高于128位
答案 1 :(得分:0)
您使用的是什么Java实现?
如果您查看文档(例如here),您会发现它们可能只支持特定的密钥长度。这个只支持128位。