ホームページ > バックエンド開発 > PHPチュートリアル > AES 暗号化文字列に PKCS7 パディングを追加および削除するにはどうすればよいですか?

AES 暗号化文字列に PKCS7 パディングを追加および削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-11 16:56:10
オリジナル
747 人が閲覧しました

How to Add and Remove PKCS7 Padding from AES-Encrypted Strings?

AES 暗号化文字列に PKCS7 パディングを追加/削除する方法?

暗号化では、PKCS7 パディングは、暗号化された文字列にバイトを追加することで機密データの機密性を確保するために使用されます。メッセージの終わり。このパディングにより、暗号化されたデータを、使用されている暗号化アルゴリズム (通常は 128 ビット モードの AES (Advanced Encryption Standard)) のブロック サイズの倍数にすることができます。

PKCS7 パディングについて

PKCS7 パディングは特定のアルゴリズムに従います:

  1. パディングに必要なバイト数を計算します。メッセージをブロック サイズの倍数にします。
  2. そのバイト数をメッセージの末尾に追加します。
  3. 各パディング バイトをパディング バイト数の値に設定します。

PKCS7 パディングの追加

PKCS7 パディングを追加するには、次の手順に従います。手順:

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

# Sample data to encrypt
data = "Hello, World!"

# Define the AES key (128 bits = 16 bytes)
key = 'YOUR_AES_KEY_16_BYTES_LONG'

# Initialization vector (IV) for ECB mode is not used and ignored
iv = '0' * 16

# Create an AES cipher in ECB mode
cipher = AES.new(key, AES.MODE_ECB)

# Pad the data before encryption
padded_data = pad(data, 16)  # 16 is the block size for AES-128

# Encrypt the padded data
ciphertext = cipher.encrypt(padded_data)

# Encode the ciphertext in base64 for transmission
ciphertext_base64 = base64.b64encode(ciphertext).decode('utf-8')

# Print the encrypted and base64-encoded ciphertext
print(ciphertext_base64)
ログイン後にコピー

PKCS7 パディングの削除

PKCS7 パディングを削除するには、次の手順に従います:

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

# Sample base64-encoded ciphertext to decrypt
ciphertext_base64 = 'ENCRYPTED_AND_BASE64_ENCODED_DATA'

# Decode the base64 ciphertext
ciphertext = base64.b64decode(ciphertext_base64)

# Define the AES key (128 bits = 16 bytes)
key = 'YOUR_AES_KEY_16_BYTES_LONG'

# Initialization vector (IV) for ECB mode is not used and ignored
iv = '0' * 16

# Create an AES cipher in ECB mode
cipher = AES.new(key, AES.MODE_ECB)

# Decrypt the ciphertext
decrypted = cipher.decrypt(ciphertext)

# Remove the padding from the decrypted data
data = unpad(decrypted, 16)

# Print the decrypted and unpadded data
print(data.decode('utf-8'))
ログイン後にコピー

以上がAES 暗号化文字列に PKCS7 パディングを追加および削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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