我正在尝试实现一个SOAP客户端,该客户端应该接收带有MTOM / XOP附件的消息(XML) . 邮件正文和附件使用单独的密钥加密 . 使用的加密算法是AES128-CBC . 主体是base64编码并且解密很好,但是附件是二进制的并且具有奇数长度(530字节,527字节等) .
我的问题是,服务器是否有可能搞乱加密?或者是否可以生成不是16的倍数的AES128输出?
CBC 在 CBC 模式下将始终生成16字节倍数的输出 .
如果在CTR (Counter) mode)中使用 AES ,则它会生成与输入长度相同的输出 .
AES是一种分组密码,可以使用16字节块,一次只有16字节的数据 . 对于CBC模式,输入和输出必须是16字节的倍数 . 点击率模式没有此要求 .
解决这个问题的方法是在加密之前向输入添加填充字节,并在解密后删除它们 . 这可以通过指定填充类型自动完成,通常为PKCS#7 padding .
2 回答
CBC 在 CBC 模式下将始终生成16字节倍数的输出 .
如果在CTR (Counter) mode)中使用 AES ,则它会生成与输入长度相同的输出 .
AES是一种分组密码,可以使用16字节块,一次只有16字节的数据 . 对于CBC模式,输入和输出必须是16字节的倍数 . 点击率模式没有此要求 .
解决这个问题的方法是在加密之前向输入添加填充字节,并在解密后删除它们 . 这可以通过指定填充类型自动完成,通常为PKCS#7 padding .