1A.algo - Casser le code de Vigenère

La lettre la plus fréquente en français est la lettre E. Cette information permet de casser le code de César en calculant le décalage entre la lettre la plus fréquente du message codé et E. Mais cette même méthode ne marchera pas pour casser le code de Vigenère. Babbage a contourné cet obstacle en étudiant la fréquence des groupes de trois lettres.

Charles Babbage s'est dit qu'un groupe de trois lettres consécutives avaient toutes les chances, à chaque fois qu'il apparaissait dans le message chiffré, d'être la conséquence du chiffrement des mêmes lettres du message avec les mêmes lettres de la clé (voir Cryptanalyse du chiffre de Vigenère). Pour un groupe de quatre lettres, c'est encore plus probable. Par conséquent, l'espacement entre deux mêmes groupes de lettres chiffrées est un multiple de la longueur de la clé. Par exemple, si la répétition d'un groupe est espacée de 30 lettres, puis celle d'un autre de 25, le plus grand diviseur commun de 25 et 30 est 5. La clé possède donc dans ce cas 5 lettres.

La première fonction crypte et décrypte le code de Vigenère connaissant la clé.

Les deux fonctions suivantes estime la longueur de la clé.

La fonction suivante casse le code de Vigenère connaissance la longueur de la clé.

Enfin, la dernière fonction qui casse le code en appelant toutes les autres :

Un petit example avec le dernier jour d'un condamné qu'on récupère depuis le site Gutenberg :

On enlève les caractères indésirables :

On le code une clé :

Puis on essaye de retrouver la clé :