Version ULTIME du Système Dyrkien de Chiffrement !
Haha quel nom élogieux pour un modeste article .. n'est-ce pas ?
Encore un petit update de mon système de chiffrement, qui cette fois permet de gérer des clés sans limite de taille ni de caractère :)
- L'algorithme a évolué, il parcours chaque caractères de la chaîne à chiffrer.
- Il prend dans l'ordre les caractères de la clef.
- Si le caractère de la clef est un chiffre, il fait la différence entre le code Ascii et le chiffre.
- Si ça n'est pas un chiffre, il concatène les 2 premières lettres du base64 ainsi qu'un caractère correspondant au code Ascii du caractère additionné de la taille de la clef modulo 10
Exemple :
Prenons le mot toto avec la clef 'a1z2'
encrypt( "toto" , 'a1z2' ) ;
- Je prends la première lettre de toto : " t "
- " a " (première lettre de la clef ' a1z2 ') n'est pas un chiffre
- Je prends les 2 premiers caractères du base64 de la lettre " a " ==> " YQ== " ==> YQ
- Auquel j'ajoute le caractère correspondant au :
- code Ascii de la lettre " t " : 116
- additionné à la taille de la clef ( a1z2 = 4 lettres ) modulo 10 => 4 % 10 : 4
- Soit 116+ 4 = 120
- 120 correspond à la lettre " x "
Soit : YQx
- Je prends la deuxième lettre de toto : " o "
- " 1 " est un chiffre (deuxième lettre de la clef ' a1z2 ')
- j'additionne donc son le code Ascii de " o " soit 111 avec le chiffre 1 : 112
- Le caractère correspondant au code Ascii 112 est " p "
- Ainsi nous pouvons rajouter à YQe la lettre " p " : YQep
- Je prends la troisième lettre de toto : " t "
- " z " (troisième lettre de la clef ' a1z2 ' ) n'est pas un chiffre
- Je prends les 2 premiers caractères du base64 de la lettre " a " ==> " eg== " ==> eg
- Auquel j'ajoute le caractère correspondant au :
- code Ascii de la lettre " t " : 116
- additionné à la taille de la clef ( a1z2 = 4 lettres ) modulo 10 => 4 % 10 : 4
- Soit 116+ 4 = 120
- 120correspond à la lettre " x "
Soit : egx
- Nous obtenons désormais YQxpegx
- Je prends enfin la dernière lettre de toto : " o "
- " 2 " est un chiffre (dernière lettre de la clef ' a1z2 ' )
- j'additionne donc son le code Ascii de " o " soit 111 avec le chiffre 2 : 113
- Le caractère correspondant au code Ascii 113 est " q "
- Ainsi nous pouvons rajouter à YQxpegx la lettre " q " :YQxpegxq
Pour terminer le processus, nous convertissons YQxpegxq en base64 et nous obtenons : WVF4cGVneHE=
Toto devient donc WVF4cGVneHE=
[EDIT] : une faille existait dans l'algorithme que je vous décrit ci-dessus, qui permettait à un attaquant de dechiffrer un texte, dans le cas ou la clé ne contient que des lettres, et si il met une clé avec le même nombre de lettre.
J'ai mis à jour mon code.
Ci-Joint le code JavaScript et PHP :
Javascript :
PHP :
Salut,
Super blog, la simplicité de lecture des diffèrent article j’adore.
Super sympa le système de chiffrement de texte, mais il y a un petit bug avec les caractères spéciaux type : & é » ‘ ( – è _ ç à ) . il retourne des chose bizarre lors du décryptage.
Super taf.
@ bientôt.