- ROT47
-
ROT13
Le ROT13 (rotate by 13 places) est un cas particulier du chiffre de César, un algorithme simpliste de chiffrement de texte. Comme son nom l’indique, il s’agit d’un décalage de 13 caractères de chaque lettre du texte à chiffrer. Le défaut de ce chiffrement est que s’il s’occupe des lettres, il ne s’occupe pas des chiffres, des symboles et de la ponctuation. C’est pourquoi on supprime du texte à chiffrer toute accentuation, et si on veut conserver un texte correctement chiffré, il est nécessaire d’écrire les nombres en toutes lettres.
Enfin, un caractère étant invariablement remplacé par un autre, cet algorithme est aussi qualifié de substitution monoalphabétique.
Sommaire
L'algorithme
À l’aide de la définition de cet algorithme, on peut alors définir la correspondance entre les caractères en clair et chiffrés :
Caractère non-chiffré A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Caractère chiffré N O P Q R S T U V W X Y Z A B C D E F G H I J K L M L’avantage de ROT13, c’est le fait que le décalage soit de 13. L’alphabet comporte 26 lettres, et si on applique deux fois de suite le chiffrement, on obtient comme résultat le texte en clair. Pour cela on doit considérer l’alphabet comme circulaire, c’est-à-dire qu’après la lettre Z on a la lettre A, ce qui permet de grandement simplifier son usage et sa programmation puisque c’est la même procédure qui est utilisée pour le chiffrement et le déchiffrement.
ROT13 va à l’encontre du principe de Kerckhoffs car si l’adversaire apprend ou devine que le message a été chiffré en ROT13, il sera capable de le déchiffrer sans problème.
Utilité
Preuve par l’exemple est faite qu’il n’est pas évident de lire un texte une fois qu’il est chiffré avec ROT13 mais évidemment, il ne faut pas utiliser ce chiffrement si vous souhaitez conserver des secrets en sécurité. Ce type de chiffrement est plutôt utilisé dans les forums, news et groupes pour ne pas dévoiler à tous les solutions de jeux, les fins de films ou ne pas casser l’intrigue d’une série…
Exemple d'implémentation en C
#include <stdlib.h> #include <stdio.h> #define BUFF_SIZE 64 #define ROT 13 /* ** Conversion à la volée en ROT13 */ static char *rot13(char *str) { char *ret = str; for (; *str; str++) if (*str >= 'a' && *str <= 'z') *str = (*str - 'a' + ROT) % 26 + 'a'; else if (*str >= 'A' && *str <= 'Z') *str = (*str - 'A' + ROT) % 26 + 'A'; return ret; } int main(void) { char line[BUFF_SIZE + 1]; while (fgets(line, BUFF_SIZE, stdin) != NULL) printf("%s\n", rot13(line)); return EXIT_SUCCESS; }
Exemple d'utilisation
$ gcc rot13.c -W -Wall -o rot13 $ echo "Chiffre moi" | ./rot13 Puvsser zbv $
Variante
ROT47 est une variante de ROT13 qui permet de chiffrer les lettres, les chiffres, et les autres caractères spéciaux. ROT47 se base sur le code ASCII, qui assigne à chaque symbole un nombre. Il utilise les nombres dans l’intervalle 33 à 126, correspondant respectivement au point d’exclamation (« ! ») et au symbole tilde (« ~ »). Ensuite, selon le même principe que le ROT13, il effectue une rotation de 47 lettres. Le fait d’utiliser un panel de symboles plus important que le ROT13 permet un brouillage plus efficace, même si le code reste trivial à déchiffrer.
Outils
Outre quelques traducteurs en ligne, il existe aussi des extensions à des outils de messagerie ou à des navigateurs internet. On peut également citer :
tr a-zA-Z n-za-mN-ZA-M
Liens externes
- (en) rot13page.googlepages.com : Traduction en ligne de textes en utilisant l’algorithme ROT13.
- (en) ROT13.com : Traduction en ligne de textes en utilisant l’algorithme ROT13.
- (en) Mnenhy : Extensions pour Mozilla, Firefox ou Thunderbird.
- (en) Tweet13 : ROT13 pour Twitter.
- (fr) Faiblesses du rot 13 : Description formelle et discussion autour du ROT13 et de ses faiblesses.
- Portail de la cryptologie
Catégorie : Algorithme de cryptographie symétrique
Wikimedia Foundation. 2010.