Maison >développement back-end >tutoriel php >Comment le remplissage PKCS7 fonctionne-t-il avec le cryptage AES ?
Remplissage PKCS7 pour le cryptage AES
Lors du cryptage de données à l'aide du cryptage AES 128 bits en mode ECB, un remplissage PKCS7 peut être nécessaire pour garantir le les données sont un multiple de la taille du bloc. Ce remplissage ajoute un nombre variable d'octets à la fin des données, où la valeur de chaque octet représente le nombre d'octets de remplissage ajoutés.
Ajout du remplissage PKCS7
Pour ajouter un remplissage PKCS7 à une chaîne de texte en clair :
Exemple en PHP (Mcrypt)
<?php $block_size = mcrypt_get_block_size('rijndael_128', 'ecb'); // Block size for AES $padding_size = $block_size - (strlen($plaintext) % $block_size); $plaintext .= str_repeat(chr($padding_size), $padding_size); ?>
Suppression du remplissage PKCS7
Pour supprimer le remplissage PKCS7 d'une chaîne de texte chiffré :
Exemple en PHP (Mcrypt)
<?php $ciphertext = ...; // Encrypted ciphertext with PKCS7 padding $key = ...; // Encryption key $decrypted_plaintext = mcrypt_decrypt('rijndael_128', $key, $ciphertext, 'ecb'); $padding_length = ord($decrypted_plaintext[strlen($decrypted_plaintext) - 1]); if (str_repeat(chr($padding_length), $padding_length) === substr($decrypted_plaintext, -1 * $padding_length)) { $plaintext = substr($decrypted_plaintext, 0, -1 * $padding_length); // Remove padding } else { // Invalid padding } ?>
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!