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

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

Barbara Streisand
풀어 주다: 2024-12-11 16:56:10
원래의
779명이 탐색했습니다.

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 패딩을 추가하려면 다음을 따르세요. 단계:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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 패딩을 제거하려면 다음 단계를 따르세요.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿