AES128-CBC加密能产生奇数长度的输出吗?

时间:2017-07-28 00:15:49

标签: encryption

我正在尝试实现一个SOAP客户端,该客户端应该接收带有MTOM / XOP附件的消息(XML)。邮件正文和附件使用单独的密钥加密。使用的加密算法是AES128-CBC。主体是base64编码并且解密很好,但是附件是二进制的并且具有奇数长度(530字节,527字节等)。

我的问题是,服务器是否有可能搞乱加密?或者是否可以生成AES128输出,它不是16的倍数?

2 个答案:

答案 0 :(得分:1)

CBC 模式下的

AES 将始终生成16字节倍数的输出。

如果在CTR (Counter) mode) 中使用 AES ,则会生成与输入长度相同的输出。

答案 1 :(得分:0)

AES是一种分组密码,可以使用16字节块,一次只有16字节的数据。对于CBC模式,输入和输出必须是16字节的倍数。点击率模式没有此要求。

解决这个问题的方法是在加密之前向输入添加填充字节,并在解密后删除它们。这可以通过指定填充类型自动完成,通常为PKCS#7 padding