ホームページ >バックエンド開発 >PHPチュートリアル >PKCS7 パディングは AES 暗号化でどのように機能しますか?また、PHP でそれを追加および削除するにはどうすればよいですか?
AES 暗号化用の PKCS7 パディング
AES 暗号化を使用する場合、暗号化されたデータの長さがブロックと一致するようにするために PKCS7 パディングを使用するのが一般的です。基礎となる暗号化アルゴリズムのサイズ。ただし、このパディングの追加と削除は Mcrypt 拡張機能では処理できない場合があり、手動タスクとして残されます。
PKCS7 パディングの説明
RFC 5652 で定義されているように、 PKCS #7 パディングは、パディング長に等しい値を持つバイトを追加することによって機能します。たとえば、3 バイトをパディングする必要がある場合、追加されるバイトはすべて 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 Padding
パディングを削除するには、最後の部分を読んでください復号化されたデータのバイト。この値はパディングの長さを表します。次に、データの末尾からそのバイト数を削除するだけです。
パディングを削除するサンプル PHP 関数
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }
実装ノート
以上がPKCS7 パディングは AES 暗号化でどのように機能しますか?また、PHP でそれを追加および削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。