0
我試過this code來自openssl wiki,它通過aes-256算法生成密文。 輸入純文本的長度是512字節。然而,輸出的長度是不同的。 PHP生成一個長度爲512字節的輸出,而C生成一個長度爲528字節的密文。爲什麼通過mcrypt_encrypt()生成的密文長度與通過openssl加密庫生成的密文長度不同
爲什麼存在這樣的差異,我如何使用aes-256算法來加密PHP中的文本,然後在C中解密它?
我試過this code來自openssl wiki,它通過aes-256算法生成密文。 輸入純文本的長度是512字節。然而,輸出的長度是不同的。 PHP生成一個長度爲512字節的輸出,而C生成一個長度爲528字節的密文。爲什麼通過mcrypt_encrypt()生成的密文長度與通過openssl加密庫生成的密文長度不同
爲什麼存在這樣的差異,我如何使用aes-256算法來加密PHP中的文本,然後在C中解密它?
你應該看例如mcrypt_encrypt
的註釋部分使用PKCS#7填充方法填充明文消息。 PHP使用零填充,直到塊邊界上的第一個值,而不是通常使用的特別PKCS#7填充方法。
零填充的問題在於,對於可能以00
字節值結尾的消息而言,它是不確定的,因爲這可能在unpadding期間被刪除。
刪除了問題的最後部分,請求示例在這裏明確地脫離主題。 – 2014-11-24 00:35:14