2013-03-19 116 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