2017-10-20 190 views
2

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

虽然它是可以在我的服务器端,我有一个是否使用0填充工程的问题。举一个例子,明文以0填充字符结尾。服务器端不可能区分它。

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

在此先感谢。

回答

2

不确定“ASCII代码0”是什么意思,我会假设一个值为0x00的字节? (是十六进制还是一件事)请参阅Zero padding如果原始文件以一个或多个零字节结尾,则零填充可能不可逆,从而无法区分明文数据字节和填充字节。

空填充(0x00)可以用于不以空结尾的数据,ASCII文本是一个有效的示例。不赞成使用的PHP mcrypt会这样做,并且null填充会产生互操作性问题。

所以:是的,null填充确实对一些数据(如文本)有效,但对于二进制数据则失败。最好不要使用它,PKCS#7.PKCS#5填充是一个更好和更普遍使用的填充。