0

我正在尝试设置 AES 加密。

我正在使用以下库,效果很好。

http://www.coderelic.com/examples/AES_Encryption_Example.php

但是外部业务告诉我使用填充NULL,我不知道

  3 = Pad with NULLs. (If already a multiple of the algorithm's block
  size, no padding is added).

我完全迷路了,lib类中也没有带NULL的Pad,有没有人可以帮忙,说真的我一无所知。任何建议或帮助表示赞赏。

4

1 回答 1

1

您正在使用的代码已经在这样做了。查看开头AES_Encryption.php

此 AES_Encryption 类中的默认填充方法是零填充零填充对于消息中的填充通常是可以的,因为在可读消息末尾剥离的空字节不应损害文本的重点。如果您担心消息完整性,可以使用 PKCS7 代替

背景:AES 与许多加密算法一样,是一种分组密码。这意味着它只能加密与其块长度完全相同的数据。在加密之前,您必须决定使用填充技术将数据填充到块大小。但是任何体面的低级加密库都会处理这样的细节。您确实必须知道解密时的填充技术,否则有办法恢复原始长度,这样您就不会认为填充是数据的一部分,这就是外部业务指定填充方法的原因。

用 NULL 填充,它们几乎肯定意味着用 nul 字节填充(NULL 和 nul,经常混淆),这就是 AES_Encryption 所谓的零填充。

于 2013-03-19T04:21:44.427 回答