Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
Informatique
Cours
Page 1 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
César - Vigenère................................................................................................................ 3
1.I. Codage de César.................................................................................................................. 3
1.I.1 Principe ................................................................................................................................................... 3
1.I.2 Exemples ................................................................................................................................................ 3
1.I.2.a Codage ............................................................................................................................................ 3
1.I.2.b Décodage ........................................................................................................................................ 3
1.I.3 Clé inconnue ........................................................................................................................................... 4
1.I.4 Outils sous python .................................................................................................................................. 4
1.II. Codage de Vigenère ........................................................................................................... 5
1.II.1 Principe .................................................................................................................................................. 5
1.II.2 Exemples ............................................................................................................................................... 6
1.II.2.a Codage ........................................................................................................................................... 6
1.II.2.b Décodage ....................................................................................................................................... 6
1.II.3 Codage sous Python .............................................................................................................................. 7
1.II.4 Remarque .............................................................................................................................................. 7
Page 2 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
César - Vigenère
Le programme d’IPT nous propose d’aborder la cryptographie à travers les algorithmes dee César et
Vigenère. Je vais donc ici vous en présenter les principes afin que vous soyez en mesure de réaliser le
projet associé.
1.I. Codage de César
1.I.1 Principe
Le principe du codage de César est très simple. A partir d’une phrase, on décale chaque lettre de
l’alphabet d’une valeur fixe appelée « clé de César ». Lorsque la lettre dépasse « Z », on recommence
l’alphabet.
1.I.2 Exemples
On ne tiendra pas compte des espaces pour simplifier l’approche. Sous Python, majuscules et
minuscules sont traitées différemment, attention donc quand vous codez.
1.I.2.a Codage
Soit la phrase suivante : « PHRASEACODER ». Prenons la clé 4.
Il suffit de de décaler chaque lettre de 4 caractères vers la droite dans l’alphabet :
Phrase P H R A S E A C O D E R
+ clé T L V E W I E G S H I V
La phrase codée est donc « TLVEWIEGSHIV »
1.I.2.b Décodage
Très simple, il suffit de faire le même travail avec une clé négative.
Soit la phrase à décoder suivante « NIWYMWTEVXMI » obtenue avec une clé de 4
Phrase N I W Y M W T E V X M I
- clé J E S U I S P A R T I E
On obtient : « JESUISPARTIE »
Page 3 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
1.I.3 Clé inconnue
Il est assez simple de trouver la clé lorsque celle-ci n’est pas fournie. Pour cela, on prend un texte
français représentatif de la langue.
- On étudie le pourcentage d’apparition de chaque lettre de l’alphabet dans ce texte.
- On étudie ensuite les pourcentages d’apparition de chaque lettre du texte à décoder
- On recale les deux courbes. En général, la simple étude de la lettre la plus présente, qui est le
« E », permet de déterminer immédiatement la clé utilisée.
Une étude a été menée sur Wikipédia en 2008, elle a donné le pourcentage d’apparition des 10
principales lettres suivant (parmi des millions de lettres):
E A I S N R T O L U
12,1 7,11 6,59 6,51 6,39 6,07 5,92 5,02 4,96 4,49
1.I.4 Outils sous python
Pour réaliser le code Python de codage/décodage, on peut :
- Créer une liste Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' puis identifier l’indice
d’une lettre par la fonction Alphabet.index('C')
- Utiliser les fonctions
o chr(i) pour i allant de 97 (a) à 122 (z) pour obtenir une lettre minuscule et i allant
de 65 (A) à 90 (Z) pour une lettre majuscule
o ord('A') pour obtenir l’index de la lettre ‘A’
Page 4 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
1.II. Codage de Vigenère
L’algorithme de César rendant assez simple la détermination de la clé inconnue, l’algorithme de
Vigenère permet de complexifier la chose.
1.II.1 Principe
Soit la table de Vigenère suivante :
Le principe va consister à déterminer la lettre à indiquer dans la phrase codée en fonction :
- De la lettre à coder de la phrase à coder
- De la lettre d’une clé, un motif, sous forme de mot
Page 5 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
1.II.2 Exemples
1.II.2.a Codage
Soit la phrase suivante : « PHRASEACODER ». Prenons comme clé de Vigenère le mot « ENS »
On va créer un mot aussi long que la phrase à coder, contenant le motif répété autant de fois qu’il le
faut :
Phrase P H R A S E A C O D E R
Motif E N S E N S E N S E N S
On va ensuite utiliser la matrice de Vigenère afin de coder chaque lettre en fonction de la lettre du
motif associé :
Phrase P H R A S E A C O D E R
Motif E N S E N S E N S E N S
Lettre
T U J E F W E P G H R J
codée
La phrase codée est donc « TUJEFWEPGHRJ »
1.II.2.b Décodage
Soit la phrase à décoder suivante : « NRKYVKTNJXVW » et la clé « ENS ».
On procède comme précédemment :
Lettre
N R K Y V K T N J X V W
codée
Motif E N S E N S E N S E N S
On utilise alors le table, en cherchant la lettre codée dans le tableau, en face de la lettre de la clé.
Lettre
N R K Y V K T N J X V W
Codée
Motif E N S E N S E N S E N S
Lettre
J E S U I S P A R T I E
décodée
Page 6 sur 7
Dernière mise à jour Informatique Denis DEFAUCHY
01/04/2021 Cryptographie Cours
1.II.3 Codage sous Python
On peut coder cet algorithme de deux façons :
- On créer la matrice de Vigenère et on travaille avec
(méthode la plus longue)
- On se rend compte que le codage de Vigenère est un
codage de César à clé variable
Il est évidemment plus aisé de réutiliser le code réalisé pour
Vigenère en utilisant une clé variable.
Regardons la table de Vigenère :
- Coder une lettre de l’alphabet avec un motif dont la lettre est A revient à coder la lettre de
l’alphabet avec le code de César pour une clé nulle.
- Coder une lettre de l’alphabet avec un motif dont la lettre est B revient à coder la lettre de
l’alphabet avec le code de César pour une clé valant 1.
- Coder une lettre de l’alphabet avec un motif dont la lettre est C revient à coder la lettre de
l’alphabet avec le code de César pour une clé valant 2.
Autrement dit, en appelant N (0 à 25) l’indice de la lettre de la clé de Vigenère, coder une lettre avec
l’algorithme de Vigenère revient à coder cette lettre avec l’algorithme de César de clé N.
Décoder une lettre codée par Vigenère dont la lettre de la clé associée est d’indice N dans l’alphabet
(0 à 25) revient à réaliser un décodage de César de clé N.
Exemple pour l’encodage vu précédemment :
Phrase P H R A S E A C O D E R
Motif E N S E N S E N S E N S
Clé
4 13 18 4 13 18 4 13 18 4 13 18
César
Lettre
T U J E F W E P G H R J
codée
1.II.4 Remarque
Un code Vigenère avec une clé d’une lettre est un code César de clé l’indice de la lettre associé (A↔0
Z↔25).
Page 7 sur 7