由于客户端的某些限制,他们在将纯文本用0x00
填充之前将其传递给AES算法,而不是普通的PKCS5 / PKCS7或类似的填充。
虽然它在我的服务器端是可行的,但我有一个问题是使用0-padding是否正常工作。举一个例子,纯文本以0-padding字符结尾。服务器端无法区分它。
0填充是否是可接受的填充方法之一,如果是这样,我的身边应该如何正确处理填充?
提前致谢。
答案 0 :(得分:2)
不确定" ASCII码0"是什么意思,我假设一个值为0x00的字节? (是十六进制仍然是一件事)参见Zero padding:如果原始文件以一个或多个零字节结束,则零填充可能不可逆,从而无法区分明文数据字节和填充字节。 / em>的
空填充(0x00)可以用于不以null结尾的数据,ASCII文本是一个有效的示例。不推荐使用的PHP mcrypt执行此操作,并且空填充会产生互操作性问题。
所以:是的null填充对某些数据(如文本)有效,但对二进制数据失败。最好不要使用它,PKCS#7.PKCS#5填充是一种更好,更常用的填充。