由于客户端的某些限制,他们在将纯文本传递给 AES alogirhtm 之前用 0x00
填充它,而不是正常的 PKCS5/PKCS7 或类似的填充。
虽然它在我的服务器端是可行的,但我有一个问题:使用 0 填充是否有效。举一个纯文本以 0 填充字符结尾的示例。服务器端无法区分。
0-padding 是可接受的填充方法之一吗?如果是,我这边应该如何正确处理填充?
提前致谢。
最佳答案
不确定“ASCII 代码 0”是什么意思,我会假设一个字节的值为 0x00? (是的,十六进制仍然是一件事)请参阅 Zero padding : 如果原始文件以一个或多个零字节结尾,则零填充可能不可逆,从而无法区分明文数据字节和填充字节。
空填充 (0x00) 可用于不以空结尾的数据,ASCII 文本就是一个有效的示例。已弃用的 PHP mcrypt 会执行此操作,并且空填充会产生互操作性问题。
所以:是的,空填充确实适用于某些数据(例如文本),但不适用于二进制数据。最好不要使用它,PKCS#7.PKCS#5 padding是更好、更常用的padding。
关于encryption - AES128 CBC 可以使用 0 填充吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841625/