>백엔드 개발 >PHP 튜토리얼 >AES 암호화 문자열에서 PKCS7 패딩을 추가하고 제거하는 방법은 무엇입니까?

AES 암호화 문자열에서 PKCS7 패딩을 추가하고 제거하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-11 16:56:10749검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.