Remplissage PKCS7 pour le cryptage AES
Lors de l'utilisation du cryptage AES, il est courant d'utiliser le remplissage PKCS7 pour garantir que la longueur des données cryptées s'aligne sur le bloc taille de l’algorithme de chiffrement sous-jacent. Cependant, l'ajout et la suppression de ce remplissage peuvent ne pas être gérés par l'extension Mcrypt, ce qui en fait une tâche manuelle.
PKCS7 Padding Explained
Tel que défini dans la RFC 5652, Le remplissage PKCS #7 fonctionne en ajoutant des octets avec une valeur égale à la longueur du remplissage. Par exemple, si nous devons remplir trois octets, les octets ajoutés auront tous la valeur 0x03.
Ajout du remplissage PKCS7
Pour ajouter le remplissage manuellement, calculez le différence entre la longueur actuelle des données et la taille de bloc souhaitée. Cette valeur représente le nombre d'octets de remplissage requis. Ensuite, ajoutez autant d'octets avec la longueur de remplissage comme valeur à la fin des données.
Exemple de fonction PHP pour ajouter du remplissage
function addPKCS7Padding($data) { $block_size = 16; $pad_length = $block_size - (strlen($data) % $block_size); $padding = str_repeat(chr($pad_length), $pad_length); return $data . $padding; }
Suppression PKCS7 Padding
Pour supprimer le remplissage, lisez le dernier octet des données déchiffrées. Cette valeur représente la longueur du remplissage. Ensuite, supprimez simplement ce nombre d'octets à la fin des données.
Exemple de fonction PHP pour supprimer le remplissage
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }
Notes d'implémentation
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!