用于 AES 加密的 PKCS7 填充
在 ECB 模式下使用 128 位 AES 加密来加密数据时,可能需要 PKCS7 填充来确保data 是块大小的倍数。此填充会在数据末尾添加可变数量的字节,其中每个字节的值表示添加的填充字节数。
添加 PKCS7 填充
向明文字符串添加 PKCS7 填充:
PHP 示例(Mcrypt)
<?php $block_size = mcrypt_get_block_size('rijndael_128', 'ecb'); // Block size for AES $padding_size = $block_size - (strlen($plaintext) % $block_size); $plaintext .= str_repeat(chr($padding_size), $padding_size); ?>
删除 PKCS7 填充
要从密文字符串中删除 PKCS7 填充:
PHP 示例 (Mcrypt)
<?php $ciphertext = ...; // Encrypted ciphertext with PKCS7 padding $key = ...; // Encryption key $decrypted_plaintext = mcrypt_decrypt('rijndael_128', $key, $ciphertext, 'ecb'); $padding_length = ord($decrypted_plaintext[strlen($decrypted_plaintext) - 1]); if (str_repeat(chr($padding_length), $padding_length) === substr($decrypted_plaintext, -1 * $padding_length)) { $plaintext = substr($decrypted_plaintext, 0, -1 * $padding_length); // Remove padding } else { // Invalid padding } ?>
以上是PKCS7 填充如何与 AES 加密配合使用?的详细内容。更多信息请关注PHP中文网其他相关文章!