Maison > développement back-end > tutoriel php > Comment ajouter et supprimer le remplissage PKCS7 des chaînes chiffrées en AES ?

Comment ajouter et supprimer le remplissage PKCS7 des chaînes chiffrées en AES ?

Barbara Streisand
Libérer: 2024-12-11 16:56:10
original
748 Les gens l'ont consulté

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

Comment ajouter/supprimer le remplissage PKCS7 d'une chaîne cryptée AES ?

En cryptographie, le remplissage PKCS7 est utilisé pour garantir la confidentialité des données sensibles en ajoutant des octets supplémentaires au fin d'un message. Ce remplissage permet aux données chiffrées d'être un multiple de la taille de bloc de l'algorithme de chiffrement utilisé, généralement AES (Advanced Encryption Standard) en mode 128 bits.

Comprendre le remplissage PKCS7

Le remplissage PKCS7 suit un algorithme spécifique :

  1. Calculez le nombre d'octets nécessaires pour compléter le message dans un multiple de la taille du bloc.
  2. Ajoutez ce nombre d'octets à la fin du message.
  3. Définissez chaque octet de remplissage sur la valeur du nombre d'octets de remplissage.

Ajout d'un remplissage PKCS7

Pour ajouter un remplissage PKCS7, vous pouvez suivre ces étapes :

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)
Copier après la connexion

Suppression du rembourrage PKCS7

Pour supprimer le rembourrage PKCS7, vous pouvez suivre ces étapes :

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'))
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal