Challenge 2012 - Cryptanalyse de petits fichiers textes

Voici quelques textes de la litérature Française ou anglaise qui ont été chiffrés dans l'archive ci-jointe (SHA1 : 0ce164a06e163f382d48eeec43c6bbedd132fd44).

A vous d'écrire les programmes informatiques permettant de les déchiffrer, de trouver le titre ainsi que l'auteur...

Pour simplifier le codage, les textes originaux ont été transformés de la façon suivante :

Tous les caractères sont en MAJUSCULE, sans ponctuation ni espace.

La phrase :

"La cryptanalyse est la science qui consiste à tenter de déchiffrer un message
 ayant été chiffré, sans posséder la clé de chiffrement."

Se transforme alors en :

LACRYPTANALYSEESTLASCIENCEQUICONSISTEATENTERDEDECHIFFRERUNMESSAGE
AYANTETECHIFFRESANSPOSSEDERLACLEDECHIFFREMENT

Il y a 4 méthodes de chiffrement à "casser" :

  • Le chiffre à décalage (http://fr.wikipedia.org/wiki/Chiffrement_par_d%C3%A9calage)
  • Le chiffre de Vigenère (http://fr.wikipedia.org/wiki/Chiffre_de_Vigen%C3%A8re)
  • Un chiffre à substitution monoalphabétique
  • Un chiffre à substitution polyalphabétique

Pour le chiffre à décalage :

Trouver le décalage.

Pour le chiffre de Vigenère :

Trouver la clé.

Pour le chiffre à substitution monoalphabétique :

Trouver les valeurs de a et b.
En codant le A par 0, le B par 1, ..., le Z par 25
La formule de chiffrement est la suivante : c = a.x + b (mod 26)
Par exemple si a=3 et b=2 :
Le texte AEIOUY devient COASKW :
A : x=0 => c=3.0+2=2 -> C
E : x=4 => c=3.4+2=14 -> O
I : x=8 => c=3.8+2=26=0 -> A
O : x=14 => c=3.14+2=44=18 -> S
U : x=20 => c=3.20+2=62=10 -> K
Y : x=24 => c=3.24+2=74=22 -> W
Pour déchiffrer, la formule est d = a-1*(c-b) (mod 26)
Sachant que 3.9=27=1 (mod 26), a-1 est égal à 9 pour notre exemple donc :
C : c=2 => d=9.(2-2)=0 -> A
O: c=14 => d=9.(14-2)=108=4 -> E
A : c=0 => d=9.(0-2)=-18=8 -> I
S : c=18 => d=9.(18-2)=144=14 -> O
K : c=10 => d=9.(10-2)=72=20 -> U
W : c=22 => d=9.(22-2)=180=24 -> Y

Pour le chiffre à substitution polyalphabétique :

Trouver le décalage.
Le chiffrement est un chiffrement à décalage qui tient compte de la position de la lettre dans la phrase.
La formule de chiffrement est la suivante : c = x + n + i (mod 26)
n est le décalage et i la position de la lettre.
Avec un décalage de 3, le texte ABCABC devient DFHGIK
A : x=0 => c=0+3+0=3 -> D
B : x=1 => c=1+3+1=5 -> F
C : x=2 => c=2+3+2=7 -> H
A : x=0 => c=0+3+3=6 -> G
B : x=1 => c=1+3+4=8 -> I
C : x=2 => c=2+3+5=10 -> K
Pour déchiffrer, la formule est d = c - n - i (mod 26)
D : c=3 => d=3-3-0=0 -> A
F : c=5 => d=5-3-1=1 -> B
H : c=7 => d=7-3-2=2 -> C
G : c=6 => d=6-3-3=0 -> A
I : c=8 => d=8-3-4=1 -> B
K : c=10 => d=10-3-5=2 -> C