La grille de Vigénère

Le problème

La grille de Vigénère est un système de chiffrement devenu célèbre car il est l'un des premiers dans lequel les mêmes signes du texte codé ne renvoient pas toujours à la même lettre du texte en clair. La grille est fabriquée par permutations circulaires des lettres de l'alphabet.

abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
cdefghijklmnopqrstuvwxyzab
defghijklmnopqrstuvwxyzabc
efghijklmnopqrstuvwxyzabcd
fghijklmnopqrstuvwxyzabcde
ghijklmnopqrstuvwxyzabcdef
hijklmnopqrstuvwxyzabcdefg
ijklmnopqrstuvwxyzabcdefgh
jklmnopqrstuvwxyzabcdefghi
klmnopqrstuvwxyzabcdefghij
lmnopqrstuvwxyzabcdefghijk
mnopqrstuvwxyzabcdefghijkl
nopqrstuvwxyzabcdefghijklm
opqrstuvwxyzabcdefghijklmn
pqrstuvwxyzabcdefghijklmno
qrstuvwxyzabcdefghijklmnop
rstuvwxyzabcdefghijklmnopq
stuvwxyzabcdefghijklmnopqr
tuvwxyzabcdefghijklmnopqrs
uvwxyzabcdefghijklmnopqrst
vwxyzabcdefghijklmnopqrstu
wxyzabcdefghijklmnopqrstuv
xyzabcdefghijklmnopqrstuvw
yzabcdefghijklmnopqrstuvwx
zabcdefghijklmnopqrstuvwxy

Son fonctionnement est assez simple : soit le message " les gaulois sont dans la plaine " que nous allons coder avec le mot " cogito " par exemple.

  1. on écrit " cogito " à la queue leu leu sous le texte en clair,
  2. LES GAULOIS SONT DANS LA PLAINE
    COG ITOCOGI TOCO GITO CO GITOCO

  3. on prend la première lettre du message et la première lettre de la clef comme coordonnées dans un repère cartésien,
  4. on regarde dans la grille quelle est la lettre contenue dans la case ainsi définie. Par exemple, le premier couple de lettres (LC) donne N, le second couple de lettres (EO) donne S, ... ce qui conduit au texte codé suivant
  5. NSY OTINCOA LCPH JIGG NO VTTWPS

  6. Pour déchiffrer le message, il suffit d'effectuer l'opération en sens inverse en écrivant la clef sous le message codé. On prend la première lettre de la clef (C) dans la première colonne et on cherche la première lettre du message codé (N) sur la ligne correspondante. On remonte ensuite vers la première ligne, ce qui donne L.

Programmation

Les problèmes sont multiples mais tournent très essentiellement autour de la manipulation de chaînes de caractères...