AES128 CBC 可以使用 0 填充吗?

Can AES128 CBC uses 0-padding?

由于客户端的某些限制,他们在将纯文本传递给 AES alogirhtm 之前用 0x00 填充,而不是正常的 PKCS5/PKCS7 或类似的填充。

虽然它在我的服务器端是可行的,但我有一个问题,即使用 0-padding 是否有效。以纯文本恰好以 0 填充字符结尾为例。服务器端是无法区分的

0-padding 是可接受的填充方法之一吗?如果是,我这边应该如何正确处理填充?

提前致谢。

不确定"ASCII code 0"是什么意思,我假设一个字节的值为0x00? (是的,十六进制仍然是一回事)参见Zero padding如果原始文件以一个或多个零字节结尾,则零填充可能不可逆,从而无法区分明文数据字节和填充字节.

空填充 (0x00) 可以用于不以空结尾的数据,ASCII 文本就是一个有效的示例。已弃用的 PHP mcrypt 执行此操作,空填充会产生互操作性问题。

所以:是的,空填充对某些数据(例如文本)有效,但对二进制数据无效。最好不要用,PKCS#7.PKCS#5 padding是比较好用的padding.