ホームページ > バックエンド開発 > PHPチュートリアル > PKCS7 パディングは AES 暗号化でどのように機能しますか?

PKCS7 パディングは AES 暗号化でどのように機能しますか?

Mary-Kate Olsen
リリース: 2024-12-05 12:18:11
オリジナル
512 人が閲覧しました

How Does PKCS7 Padding Work with AES Encryption?

AES 暗号化用の PKCS7 パディング

ECB モードで 128 ビット AES 暗号化を使用してデータを暗号化する場合、PKCS7 パディングが必要になる場合があります。データはブロック サイズの倍数です。このパディングにより、データの末尾に可変バイト数が追加されます。各バイトの値は、追加されるパディング バイト数を表します。

PKCS7 パディングの追加

PKCS7 パディングを平文文字列に追加するには:

  • 次のブロック サイズを計算します。暗号化アルゴリズム (AES の場合は 16 バイト)
  • 平文の長さをブロック サイズで割った余りを計算して、必要なパディング バイト数を決定します。
  • 暗号化アルゴリズムを表す文字を平文に追加します。パディングの長さを必要な回数繰り返します。

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 パディングを削除するには:

  • パディングされた暗号文を取得するための暗号文plaintext.
  • プレーンテキストの最後のバイトの値としてパディング長を計算します。
  • プレーンテキストの最後の padding_length バイトがすべてパディング長と等しいことを確認します。
  • 最後のpadding_lengthバイトをplaintext.

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート