Ajout et suppression du remplissage PKCS7 pour le cryptage AES
Lors du cryptage de données à l'aide du cryptage AES 128 bits en mode Electronic Codebook (ECB), il est nécessaire d'ajouter et de supprimer le remplissage PKCS7 au texte brut et au texte chiffré, respectivement.
Le remplissage PKCS7 est une méthode définie dans la RFC 5652 qui garantit que la longueur des données est un multiple de la taille du bloc. Cela implique d'ajouter autant d'octets que nécessaire pour remplir le dernier bloc, où chaque octet est défini sur le nombre d'octets de remplissage ajoutés.
Ajout du remplissage PKCS7
Pour ajouter Remplissage PKCS7 du texte en clair avant le chiffrement à l'aide d'AES :
Suppression du remplissage PKCS7
Pour supprimer le remplissage PKCS7 du texte chiffré après le déchiffrement à l'aide d'AES :
Fonctions PHP pour effectuez ces opérations :
function encrypt($plaintext, $key) { $block = mcrypt_get_block_size('aes', 'ecb'); $pad = $block - (strlen($plaintext) % $block); $plaintext .= str_repeat(chr($pad), $pad); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB); } function decrypt($ciphertext, $key) { $ciphertext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext, MCRYPT_MODE_ECB); $block = mcrypt_get_block_size('aes', 'ecb'); $pad = ord($ciphertext[strlen($ciphertext) - 1]); return substr($ciphertext, 0, -1 * $pad); }
Notez qu'il est recommandé d'utiliser CBC ou d'autres modes de chaînage au lieu d'ECB pour des raisons de sécurité. cryptage.
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!