用於AES 加密的PKCS7 填充
使用AES 加密時,通常會採用PKCS7 填充來確保加密資料長度與區塊對齊底層加密演算法的大小。但是,新增和刪除此填充可能無法由 Mcrypt 擴充功能處理,而是將其保留為手動任務。
PKCS7 填充說明
根據 RFC 5652 中的定義, PKCS #7 填充的工作方式是附加等於填充長度的值的位元組。例如,如果我們需要填入三個位元組,則附加位元組的值均為 0x03。
新增 PKCS7 填充
要手動新增填充,請計算目前資料長度和所需區塊大小之間的差異。該值表示所需的填充位元組數。然後,將填充長度作為值附加到資料末尾。
用於添加填充的範例PHP 函數
function addPKCS7Padding($data) { $block_size = 16; $pad_length = $block_size - (strlen($data) % $block_size); $padding = str_repeat(chr($pad_length), $pad_length); return $data . $padding; }
刪除PKCS7 填充
要刪除PKCS7 填充
要刪除填充,請讀取取解密的最後一個位元組資料。該值表示填充的長度。然後,只需從資料末尾刪除該數量的位元組即可。
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }用於刪除填充的範例PHP 函數
以上是PKCS7 填充如何與 AES 加密配合使用,以及如何在 PHP 中新增和刪除它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!