Code d'Alice

Code d’Alice #

Une méthode de chiffrement très ancienne, et relativement robuste, consiste à remplacer les lettres du message à chiffrer par un nombre. Ce nombre correspond au numéro d’ordre de la lettre à chiffrer dans un autre texte, qui sert de clé.

Supposons que le texte clé soit :

« Et, depuis lors, » continua le Chapelier avec tristesse, « le Temps ne veut rien faire de ce que je lui demande. Il est toujours 6 heures maintenant. »

Et supposons qu’on veuille chiffrer le message suivant : pass «C6po».

On pourrait le chiffrer ainsi : 8, 84, 51, 129, 82, 59, 33, 131, 8, 22, 19.

En effet, si dans le texte clé, on prend le caractère 8 (le premier caractère est le caractère 0), on trouve un p, puis le caractère 84 (on trouve un a), puis le caractère 51 (on trouve un s) etc. :

« Et, depuis lors, » continua le Chapelier avec tristesse, « le Temps ne veut rien faire de ce que je lui demande. Il est toujours 6 heures maintenant. »
↑       ↑          ↑  ↑          ↑                 ↑       ↑                      ↑ ↑                ↑                           ↑ ↑
0       8          19 22        33                 51      59                    82 84              101                        129 131

On obtient bien : pass «C6po»

Cette méthode n’est sûre que si le texte clé est long… et qu’il est inconnu. Mais en vous renseignant sur l’agent K, vous avez appris qu’il était fan de Lewis Carroll. Il est certain que l’agent K a utilisé le texte complet original d’Alice’s Adventures in Wonderland comme clé. Vous avez récupéré ce texte, qui est disponible en suivant ce lien : Alice’s Adventures in Wonderland.

Attention à lire correctement le fichier texte servant de clé. Pour vérifier que la lecture du fichier clé est faite correctement :

  • le caractère 0 est un A ;
  • le caractère 3 est un c ;
  • le caractère 45 001 est un a ;
  • et le caractère 144 000 est un e.

Le message envoyé par l’agent K est :

119831, 37166, 111950, 141771, 96910, 63216, 31935, 70717, 3333, 86339, 
86934, 46156, 105709, 132626, 140181, 47424, 105856, 390, 115119, 110124, 
26221, 90589, 67004, 27564, 62446, 38435, 20998, 42850, 14109, 72843, 
119118, 62012, 130731, 99860, 140134, 15284, 4067, 17970, 126790, 86652, 
30951, 18281, 81398, 80599, 26462, 105248, 24451, 102205, 72125, 109585, 
44418, 115822, 8798, 95143, 44970, 90734, 142920, 14619, 98662, 106871, 
78009, 120063, 67008, 89901, 55818, 96427, 5368, 110744, 23251, 53543, 
61053, 62196, 136872, 60818, 132510, 70406, 129152, 73429, 21706, 46348, 
33893, 94277, 63360, 84870, 125729, 108848, 124308, 83, 6373, 79877, 140835, 
98983, 418, 87689, 83, 48693, 83, 8034, 70795, 37079, 138774, 18027, 139654,
40458, 32223, 13184, 101828, 63696, 6802, 107717, 50944, 94047, 69566, 
15780, 93825, 84191, 67086, 37986, 68683, 39041, 81955, 106223, 133876, 
118284, 67909, 30183, 95264, 122595, 51241, 49559, 32150, 61914, 104672, 
1242, 49168, 63164, 39401, 44294, 135585, 1816, 85988, 5845, 41393, 100962

Retrouvez le mot de passe qu’il compte utiliser lors de la prochaine réunion.

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é.