ホームページ >バックエンド開発 >PHPチュートリアル >ECB モードで AES 暗号化の PKCS7 パディングを追加および削除するにはどうすればよいですか?
AES 暗号化の PKCS7 パディングの追加と削除
電子コードブック (ECB) モードで 128 ビット AES 暗号化を使用してデータを暗号化する場合、 PKCS7 パディングを平文と暗号文に追加および削除するために必要です。
PKCS7 パディングは、RFC 5652 で定義されている方法で、データ長がブロック サイズの倍数であることを保証します。これには、最後のブロックを埋めるために必要なだけバイトを追加することが含まれます。各バイトは、追加されたパディング バイト数に設定されます。
PKCS7 パディングの追加
追加するにはAES を使用した暗号化前の平文への PKCS7 パディング:
PKCS7 パディングの削除
復号化後に暗号文から PKCS7 パディングを削除するには、次を使用します。 AES:
これらの操作を実行する 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); }
安全な暗号化には、ECB の代わりに CBC または他のチェーン モードを使用することをお勧めします。
以上がECB モードで AES 暗号化の PKCS7 パディングを追加および削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。