AES 加密 排查

AES 加密的一次问题排查

首先描述问题:因为和嵌入式设备通信,在数据在240个以内(包含)的时候,云端解密正常,但是超过240,在240以后有一段乱码。加密算法:AES/CBC/PKCS5Padding+iv

问题起因

嵌入式设备因为某种原因,加密使用的机器本身提供的加密程序,程序设计最大有效加密字段是:240,考虑填充16,最大256.
所以开发人员直接把数据拆开,拆成240段+…+240+…+n。
但是240加密没有填充。然后把加密合并提交,云端并不知道终端这样处理。
造成现象:240+乱码(16)+(240-16)正常+。。。。。。+乱码(16)+正常(n-16)

问题原因

从上面可以看出,都是首部出现的问题。终端开发对加密理解不熟,他理解为:240不填充,分段加密效果是一样的。这个主要是对cbc模式的iv理解不正确造成的。

什么是cbc模式

CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。
就是传入的iv参与第一个字块的加密,然后后续字块加密把前一个字块的加密结果当成iv。形成链条一样。

结论

所以如果要对cbc模式实现aes分段加密,那么必须遵守一下规则:

  1. 除最后一个长度外,其他字段的长度必须是16个字节(aes规范)
  2. 第一个iv使用传入的偏移,后续加密的iv,必须使用上一个数据段加密结果的最后16个字节作为偏移。
  3. 除最后一个长度外,其他字段加密使用nopadding的模式,不然中间会多出来很多无效字符。ascii 16(填充模式决定的)

遵循以上三个规则,云端就能当成整体来解密了。
完美解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat AES加密解密是一种常见的加密算法,通常用于保护敏感数据的安全传输。如果在解密过程中出现乱码的情况,可能有以下几个原因: 1. 字符集不匹配:AES加密算法加密的结果是一串二进制数据,在解密时需要将其转换为明文字符。如果解密时所使用的字符集与加密时使用的字符集不匹配,就会导致乱码。在Tomcat的配置文件中,可以设置字符集,确保解密时使用的字符集与加密时一致。 2. 密钥不正确:AES加密需要使用一个密钥进行加解密操作,如果解密时所使用的密钥与加密时使用的密钥不一致,就会导致解密结果错误,可能出现乱码。在解密过程中,确保密钥的正确性非常重要。 3. 代码逻辑错误:如果解密的代码逻辑有误,例如解密算法的实现不正确或解密的输入参数不正确,就会导致解密结果错误,可能出现乱码。在编写解密代码时,应仔细检查代码逻辑,确保解密过程正确无误。 针对以上问题,可以按照以下步骤进行排查和解决: 1. 检查字符集:确认解密时所使用的字符集与加密时一致,可以在Tomcat的配置文件中设置字符集。 2. 检查密钥:确认解密时所使用的密钥与加密时一致,确保密钥的正确性。 3. 检查代码逻辑:仔细检查解密代码逻辑,确保解密过程正确无误。 根据具体情况,可以针对以上步骤进行排查和解决,以解决Tomcat AES解密乱码的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值