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.
Le remplissage PKCS7 suit un algorithme spécifique :
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)
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'))
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!