Vous êtes sur la page 1sur 7

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

Vous aimerez peut-être aussi