2013-03-19 90 views
0

我尝试设置AES加密。PHP AES加密填充NULL

而我正在使用下面的lib,它工作得很好。

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没有垫为好,是任何人都可以提供帮助,我真的很无能。任何建议或帮助欣赏。

回答

1

您使用的代码已经在执行该操作。看到的AES_Encryption.php开始:

在此AES_Encryption类的缺省填补方法是零填充 零填充通常为在消息补白行因为 空字节在一个可读的消息的端部剥离不应伤害 的文字的一点。如果您担心邮件完整性,您可以使用PKCS7代替

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

通过填充NULL,它们几乎肯定意味着填充nul个字节(NULL和nul,所以经常会感到困惑),这就是AES_Encryption调用ZERO填充的原因。

+0

感谢rra的解释! – Bruce 2013-03-19 04:26:46

+0

工程就像一个魅力 – Bruce 2013-03-19 04:50:37