【问题标题】:Can AES128 CBC uses 0-padding?AES128 CBC 可以使用 0 填充吗?
【发布时间】:2018-04-01 04:24:55
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: encryption aes padding


    【解决方案1】:

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

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

    所以:是的,空填充确实适用于某些数据,例如文本,但不适用于二进制数据。最好不要使用,PKCS#7.PKCS#5 padding 是一种更好更常用的padding。

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 2014-01-27
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多