问题现象
- 密码输入正确登录仍失败,后端有报错日志,会出现关键字:InvalidKeyException: Illegal key size
- 密码解密失败原因排查
异常日志
2022-07-15 13:58:58.439 INFO 17064 --- [0.0-8090-exec-5] p.s.pamirs.user.api.utils.AES256Utils :
java.security.InvalidKeyException: Illegal key size
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039) ~[na:1.8.0_121]
at javax.crypto.Cipher.implInit(Cipher.java:805) ~[na:1.8.0_121]
at javax.crypto.Cipher.chooseProvider(Cipher.java:864) ~[na:1.8.0_121]
at javax.crypto.Cipher.init(Cipher.java:1396) ~[na:1.8.0_121]
at javax.crypto.Cipher.init(Cipher.java:1327) ~[na:1.8.0_121]
at pro.shushi.pamirs.user.api.utils.AES256Utils.decrypt(AES256Utils.java:93) ~[pamirs-user-api-3.0.1-20220715.032940-5.jar:na]
at pro.shushi.pamirs.user.api.crypto.DecryptAspect.decryptObj(DecryptAspect.java:81) [pamirs-user-api-3.0.1-20220715.032940-5.jar:na]
at pro.shushi.pamirs.user.api.crypto.DecryptAspect.decryptData(DecryptAspect.java:62) [pamirs-user-api-3.0.1-20220715.032940-5.jar:na]
at pro.shushi.pamirs.user.api.crypto.DecryptAspect.decrypt(DecryptAspect.java:44) [pamirs-user-api-3.0.1-20220715.032940-5.jar:na]
异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
参考资料:https://www.cnblogs.com/jinloooong/p/10619353.html
解法办法
-
1、请检查jdk版本是否高于
1.8_221
以上。 -
2、如无法升级jdk版本的环境下,下载JCE无限制权限策略文件。
请点击下载 jce_policy-8.zip 并按照如下步骤进行操作:- 解压
jce_policy-8.zip
,得到两个文件US_export_policy.jar
和local_policy.jar
- 如果安装了JRE,将两个jar文件放到
%JRE_HOME%\lib\security
目录下覆盖原来的文件 - 如果安装了JDK,将两个jar文件放到
%JDK_HOME%\jre\lib\security
目录下覆盖原来文件
- 解压
Oinone社区 作者:望闲原创文章,如若转载,请注明出处:https://doc.oinone.top/oinone-faq/7305.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验