AES128 CBC可以使用0填充吗?

时间:2017-10-20 02:39:53

标签: encryption aes padding

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

虽然它在我的服务器端是可行的,但我有一个问题是使用0-padding是否正常工作。举一个例子,纯文本以0-padding字符结尾。服务器端无法区分它。

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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