Roue de chiffrement de l'armée mexicaine
Voir aussi Disque de cryptage de l'armée Mexicaine
GW-Basic, utilisé par PC-Basic
Programme avec Texte Seulement
PC-BASIC
La roue de l'armée mexicaine est en fait constituée de 5 disques concentriques rotatifs (également appelés roues, ou étages), dont la position peut être ajustée. Généralement la roue extérieure est fixe (la roue des lettres) avec le A en haut, il n'y a donc que 4 disques qui sont pivotants et réglables.
Les 4 disques sont composés de nombres de 00 à 99 comme suit :
Disque 1 01,02,03,…,24,25,26
Disque 2 27,28,29,…,50,51,52
Disque 3 53,54,55,…,76,77,78
Disque 4 79,80,81,…,98,99,00,-,-,-,-
Le quatrième disque est composé
des nombres de 79 à 99, suivis de 00 (pour 100) et de 4 cases vides (que l'on
peut appeler 101, 102, 103 et 104).
Comment définir la position (clé
chiffrée) de la roue ?
La position des disques est la
clé de cryptage. La clé (la position des disques sur chaque étage) est définie
selon deux méthodes :
— par un ensemble de 4 chiffres, ceux situés sous
le A
Exemple : 01,27,53,79
— par un ensemble de 4 lettres, celles
au-dessus (sur le disque extérieur) des chiffres 01, 27, 53 et 79 (qui sont les
plus petits chiffres de chaque disque)
Exemple : A,A,A,A
Comment
chiffrer à l'aide de la roue de chiffrement de l'armée mexicaine ?
A chaque lettre du message
clair, l'émetteur la marque sur le cadran extérieur et associe un code à deux
chiffres (aléatoire) parmi les 4 situés directement sous la lettre.
Exemple : Soit un cadran positionné à l'étage 1 sur 01, à l'étage 2 sur 27, à
l'étage 3 sur 53 et à l'étage 4 sur 79 (qui est la position par défaut, donc
associée aux 4 lettres AAAA).
Exemple : Pour crypter DCODE, l'émetteur
localise la lettre D et peut choisir soit 04, 30, 56 ou 82 pour crypter la
première lettre. Pour le C, les chiffres 03, 29, 55 ou 81 sont possibles. Au
final, DCODE peut être chiffré 8281670405 ou 5629938257 ou autre.
Comment
déchiffrer à l'aide de la roue de chiffrement de l'armée mexicaine ?
Le décryptage nécessite de
connaître la clé de cryptage (les positions des disques), généralement 4
chiffres ou 4 lettres, qui permettent d'ajuster les positions des disques de la
roue.
Pour décrypter, le message est décomposé en paires de 2 chiffres
afin de récupérer, pour chaque nombre/code à 2 chiffres, la lettre en haut (sur
le disque extérieur) du nombre dans la roue et ainsi reconstituer le message
clair.
Exemple : Le message chiffré est 5681158231, donc 56 correspond à
D, 81 se trouve sous C, etc. Le texte en clair est DCODE.
Comment
sélectionner la position de la roue ?
La position des 4 disques peut
être définie par 4 lettres, n'importe quel mot ou acronyme peut être utilisé.
Il est également possible d'utiliser les 4 nombres à 2 chiffres (les nombres
à 1 chiffre doivent être complétés par un zéro initial) ou 8 chiffres.
Comment reconnaître un texte chiffré de l'armée mexicaine ?
Le message se compose
uniquement de chiffres et il y a un nombre pair (puisque le message crypté se
compose de paires de 2 chiffres). Toute référence au Mexique, aux Mayas, aux
fajitas, à la tequila, etc. est un indice.
Comment déchiffrer le
chiffrement de l'armée mexicaine sans roue ?
La roue de chiffrement de
l'armée mexicaine est en fait un chiffrement polyalphabétique avec 4 alphabets
par quart de travail.
Pour trouver les 4 décalages, il faut analyser les
fréquences des nombres entre 01 et 26, idem pour les nombres entre 27 et 52,
puis 53 et 78 et 79 à 99.
Ainsi, le chiffre le plus utilisé entre 01 et
26 sera probablement un E, la position de la première roue s'en déduit alors. La
même chose peut être faite pour d'autres disques.
Pour le chiffre 100 vous pouvez utiliser 00 et pour 101, 102, 103, 104 utiliser un zéro barré θ, θ1, θ2, θ3, θ4
Programme MEXCODE.BAS
Ce programme encode lettre selon les chiffres que vous saisissez pour la lettre A.
Ensuite vous avez 4 choix de menu:
1. Afficher le code pour une
lettre
2. Afficher le code pour toutes les lettres
3. Encoder un mot
4.
Quitter le programme
Vous pouvez personnalisez le programme en ajoutant l'option Décoder un mot au programme.
5 CLS:RANDOMIZE TIMER
10 DIM
CODE(26,4), N(4)
20 INPUT "Première valeur de A (1 - 26) ";N(1)
30 IF N(1)
< 1 OR N(1)>26 THEN 20
40 INPUT "Deuxième valeur de A (27 - 52) ";N(2)
50
IF N(2) < 27 OR N(2)>52 THEN 40
60 INPUT "Troième valeur de A (53 - 78)
";N(3)
70 IF N(3)< 53 OR N(3)>78 THEN 60
80 INPUT "Quatrième valeur de A
(79 - 104) ";N(4)
90 IF N(4)<79 OR N(4)>104 THEN 80
100 CODE(1,1) =
N(1):CODE(1,2) = N(2)
110 CODE(1,3) = N(3):CODE(1,4) = N(4)
120 FOR I = 2
TO 26
130 N(1)=N(1)+1:IF N(1) = 27 THEN N(1) = 1
140 N(2)=N(2)+1:IF N(2) =
53 THEN N(2) = 27
150 N(3)=N(3)+1:IF N(3) = 79 THEN N(3) = 53
160
N(4)=N(4)+1:IF N(4) = 105 THEN N(4) = 79
170 CODE(I,1) = N(1)
180CODE(I,2)
= N(2)
190 CODE(I,3) = N(3)
200 CODE(I,4) = N(4)
210 NEXT I
220 CLS
230 PRINT "1. Afficher le code pour une lettre"
240 PRINT "2. Afficher le
code pour toutes les lettres"
250 PRINT "3. Encoder un mot"
270 PRINT "4.
Quitter le programme"
280 INPUT "Quel menu 1-4 ";M
290 IF M <1 OR M>4 THEN
280
300 ON M GOSUB 1000, 2000, 3000, 4000, 5000
310 GOTO 220
1000 REM
Code pour une lettre
1010 INPUT "Pour quelle lettre en MAJUSCULE ";L$
1020
IF L$<"A" OR L$>"Z" THEN 1010
1030 I= ASC(L$)-64
1040 PRINT
CODE(I,1),CODE(I,2),CODE(I,3),CODE(I,4)
1050 GOSUB 6000
1060 RETURN
2000 CLS:P=0
2010 FOR I = 1 TO 26
2020 PRINT TAB(P) CHR$(I+64);"
";CODE(I,1);" ";CODE(I,2);" ";CODE(I,3);" ";CODE(I,4);
2030 IF P=25 THEN P=0
ELSE P=25
2040 NEXT I
2050 GOSUB 6000
2060 RETURN
3000 REM Encoder un mot
3010 INPUT "Quel mot en MAJUSCULE";M$
3020 L=LEN(M$)
3030 FOR I = 1 TO L
3040 C$=MID$(M$,I,1)
3050 R=INT(4*RND(1)+1):IF R=0 THEN 3045
3060 P=
ASC(C$)-64
3070 PRINT CODE(P,R);" ";
3080 NEXT I
3090 PRINT
3100
GOSUB 6000
3110 RETURN
4000 REM Quitter le programme
4010 END
6000
PRINT "Appuyez sur une touche pour continuer"
6010 A$=INKEY$:IF A$="" THEN
6010
6020 RETURN