错误日志:使用AES解密出现undefined,但不报错。

今天在写使用AES加密解密时出现了一个很郁闷的问题,找了很久才找到原因所在。特意在这里记录一下。
下面是错误的具体示例:
在使用AES在后台对前端传过来的参数进行解密时,使用AES工具类的AESUtils.decr();方法并将解密过后的内容进行打印,结果出现undefined。
在这里插入图片描述在这里插入图片描述
而且我在前端对传过来的password加密之后alert()了一下,发现的确有加密之后的内容,也就是说,看起来似乎值已经传过来了
在这里插入图片描述
检查了后端代码之后,终于找到报出undefined的具体代码
在这里插入图片描述这时我以为是lang3包导入出错,因此重新导入了一次,然而还是无法解决问题,然而我将mes的长度打印出来,显示的结果mes是有长度的,也即是说mes其实是有值存在。
我不得不开始怀疑是不是new String()出现了问题,翻了一遍API没有找到理想的答案。

最后,在另一次返回前端修改代码的时候,我终于发现问题所在
在这里插入图片描述
原来是我利用id选择器进行取值的时候没有加“#”。也就是说其实password并没有取到值。
但为什么还是能够加密呢?
因此我猜测AES不仅会对有值的数据进行加密,同时还会对空串进行加密,然后我又试了一下
在这里插入图片描述
在这里插入图片描述
果然加密了!这样也就找到了问题所在。

总结:AES不仅会对具体的值加密,而且也会对空串进行加密。因此在解密时它解密出来实际上也是一个空串,但为什么会报出undefined,这就涉及到AES更深层次的底层原理代码之中了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值