用于 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 填充
要删除填充,请读取解密的最后一个字节 数据。该值表示填充的长度。然后,只需从数据末尾删除该数量的字节即可。
用于删除填充的示例 PHP 函数
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }
实现说明
以上是PKCS7 填充如何与 AES 加密配合使用,以及如何在 PHP 中添加和删除它?的详细内容。更多信息请关注PHP中文网其他相关文章!