Encryption AES128 CBC是否可以使用0填充?

Encryption AES128 CBC是否可以使用0填充?,encryption,aes,padding,Encryption,Aes,Padding,由于客户端的某些限制,在将纯文本传递给AES alogirhtm之前,他们使用0x00填充纯文本,而不是普通的PKCS5/PKCS7或类似填充 虽然这在我的服务器端是可行的,但我有一个问题,即使用0-padding是否有效。例如,纯文本以0填充字符结尾。服务器端无法区分它 0-padding是一种可接受的填充方法吗?如果是,我方应如何正确处理填充 提前感谢。不确定“ASCII码0”是什么意思,我将假设一个值为0x00的字节?(是的,十六进制仍然是一个东西)请参见:如果原始文件以一个或多个零字节结

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

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

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

提前感谢。

不确定“ASCII码0”是什么意思,我将假设一个值为0x00的字节?(是的,十六进制仍然是一个东西)请参见:如果原始文件以一个或多个零字节结尾,则零填充可能是不可逆的,这使得无法区分纯文本数据字节和填充字节

空填充(0x00)可以用于不以空结尾的数据,ASCII文本就是一个例子。不推荐使用的PHP mcrypt会执行此操作,空填充会造成互操作性问题

所以:是的,空填充对某些数据(如文本)有效,但对二进制数据无效。最好不要使用它,PKCS#7。PKCS#5填充是一种更好、更常用的填充