Le chiffre affine double de l’agent K #
\(\) L’agent K n’en finit plus de vous surprendre avec ses méthodes de chiffrement customisées.
Sa dernière méthode en date est une sorte de chiffre affine double. Il commence par choisir une clé de chiffrement composée de 3 (petits) entiers strictement positifs : $(a_1, a_2, b)$. Par exemple : $(a_1, a_2, b) = (3, 5, 2)$.
Puis il utilise ce tableau :
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | B | C | D | E | F | G | H | I | J | K | L | M | $a_1 = 3$ |
N | O | P | Q | R | S | T | U | V | W | X | Y | Z | $a_2 = 5$ |
Pour chiffrer la lettre R
, il faut relever le numéro de la colonne (ici c’est 4),
puis, puisque R
est sur la seconde ligne, calculer : $(4\times a_2 + b) \mod 13$, ce qui donne 9
(avec $a_2=5$ et $b=2$ et $x \mod 13$ qui vaut le reste de la division
entière de $x$ par 13).
Sur la seconde ligne, colonne 9, on a la lettre W
. La lettre R
sera donc chiffrée en W
.
Pour chiffrer la lettre C
qui est sur la première ligne colonne 2, on calculer $(2\times a_1 + b) \mod 13$
ce qui donne 8 (avec $a_1=3$ et $b=2$). Sur la ligne 1 colonne 8, on trouve le I
, donc la lettre
C
sera chiffrée en I
.
Les caractères autres que ceux du tableau sont laissés tels quels. Ainsi, le message
VIVE PYTHON !
sera chiffré en QAQB ZSTKUP !
Vous avez réussi à intercepter un des messages de l’agent K, mais
malheureusement, vous ne savez pas quelles sont les trois valeurs $(a_1, a_2,
b)$ utilisées comme clé et vous ne connaissez pas non plus les détails du
déchiffrement.
Et en plus, l’agent K semble avoir supprimé les
espaces
de son message pour compliquer la tâche. Par contre, vous savez que le
message en clair mentionne le
mot AGENT
KLDNDKTDUDSYOTLEJDRUZ:S4NNSQUM0RN3KTDUX
Quel est le mot de passe donné dans le message ?
Pièces à fournir :
- réponse à l’énigme ;
- fichier contenant votre code source (
.sb3
ou.py
), pour que nous puissions tester ;- explications sur la manière dont vous avez procédé.