添加和删除 AES 加密的 PKCS7 填充
在电子密码本 (ECB) 模式下使用 128 位 AES 加密来加密数据时,需要向明文和密文添加和删除 PKCS7 填充,
PKCS7 填充是 RFC 5652 中定义的一种方法,可确保数据长度是块大小的倍数。它涉及根据需要追加尽可能多的字节来填充最后一个块,其中每个字节设置为添加的填充字节数。
添加 PKCS7 填充
添加使用 AES 加密之前,PKCS7 填充为明文:
删除 PKCS7 填充
要在使用 AES 解密后从密文中删除 PKCS7 填充:
执行这些操作的PHP函数:
function encrypt($plaintext, $key) { $block = mcrypt_get_block_size('aes', 'ecb'); $pad = $block - (strlen($plaintext) % $block); $plaintext .= str_repeat(chr($pad), $pad); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB); } function decrypt($ciphertext, $key) { $ciphertext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext, MCRYPT_MODE_ECB); $block = mcrypt_get_block_size('aes', 'ecb'); $pad = ord($ciphertext[strlen($ciphertext) - 1]); return substr($ciphertext, 0, -1 * $pad); }
注意,建议使用CBC或其他链接模式而不是 ECB 来实现安全加密。
以上是如何在 ECB 模式下添加和删除 AES 加密的 PKCS7 填充?的详细内容。更多信息请关注PHP中文网其他相关文章!