Auteur : : Galdon
Pays : France
Date : lundi 17 mars 2014, 12:07
Commentaire :

J'ai compris d'où vient le problème. Comme je l'ai écrit, le chiffrement par bloc découpe le message en blocs de taille fixe.


Mais la taille du message n'est pas forcément un multiple de la taille du bloc, autrement dit la découpe ne tombe pas forcément pile-poil, donc on se retrouve potentiellement avec le dernier bloc partiellement rempli.


Or, certains modes opératoires (comme cbc et ecb) ne peuvent travailler qu'avec des blocs pleins, alors ils vont remplir arbitrairement le dernier bloc. On appelle ça le padding (ou remplissage en français, on dit aussi bourrage mais c'est moins classe...).


En général le remplissage se fait avec l'octet 0x00, qui correspond au caractère NUL. Et ce sont ces fameux octets de padding qu'on retrouve au décryptage à la fin du message.


Pour résoudre ce "bug" qui n'en n'est pas un, il suffit d'utiliser la fonction rtrim pour supprimer les caractères NUL à la fin de la chaine, comme l'a indiqué @seb en commentaire, et ça marche alors avec tous les modes opératoires.


J'ai corrigé le code PHP de la classe Chiffrement dans le tuto.

Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré