32位token加密密码报【java.security.InvalidKeyException: Illegal key size】错误

Blade 未结 3 354
xupengggggg
xupengggggg 2024-05-14 18:57

一、该问题的重现步骤是什么?

1. 使用org.springblade.test.CryptoKeyGenerator生成的AES 32位加密key

2. 前后端分别配置token的加密key

3.接口请求后端解析被加密的token时,经过跟踪发现报【java.security.InvalidKeyException: Illegal key size】错误


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex,当前版本3.4.0,windows开发环境


四、请提供详细的错误堆栈信息,这很重要。

jdk1.8的jre的CryptoPermission类在判断加密key长度时,32位  > 16位(jdk1.8默认长度),导致报错,具体报错代码如下:

                      if (var2.maxKeySize <= this.maxKeySize) {

                            if (!this.impliesParameterSpec(var2.checkParam, var2.algParamSpec)) {

                                return false;

                            }

        

                            if (this.impliesExemptionMechanism(var2.exemptionMechanism)) {

                                return true;

                            }

                        }

五、若有更多详细信息,请在下面提供。

3条回答
  •  xupengggggg
    xupengggggg (楼主)
    2024-05-15 09:44

    没带什么格式呐,就是32位随机数,jdk1.8对32位key的加密本来就会报错,这是jdk1.8的出口限制,网上也有针对这个关题的描述,见:https://blog.csdn.net/lz65169317/article/details/126637852

提交回复