0% ont trouvé ce document utile (0 vote)
180 vues8 pages

Cryptographie Classique

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 8

2016 - 2017

RAPPORT FINAL
CRYPTOGRAPHIE CLASSIQUE
ELISA CRESPY AUORE BRUNET HUSSON JULIA NORE MAXIME
Nous avions choisi comme projet pour le parcours Innovation la cryptographie classique. Nos objectifs taient de
dcouvrir le monde de la cryptographie grce plusieurs mthodes de cryptage. Nous avons donc tudi les deux
techniques les plus simples : le code Csar et le chiffrement affine. Aprs les avoir tudis mathmatiquement, nous
sommes passs la partie programmation faite grce au logiciel de programmation Python. Dans ce rapport nous
allons tenter de rsumer les grandes tapes de nos travaux ainsi que nos rsultats finaux.

1. LE CODE CESAR :

Rappelons pour commencer la mthode simple qui permet de dcrypter un texte grce au code Csar partir dun
texte crypt.

- Trouver un texte crypt


- Compter le nombre de chaque caractre
- On sait que la lettre ayant la plus grande frquence dapparition en langue latine est le E puis en seconde
place, la lettre A suivi par le I
- Attribuer la lettre qui a la plus grande frquence dapparition dans le texte crypt la lettre E
- Compter le dcalage entre la lettre slectionne et le E
(Par exemple, si la lettre slectionne est le K , elle occupe la onzime place dans lalphabet tandis que le
E est situe la cinquime place, ainsi le dcalage est de 11 5 = 6)
- Dcaler toutes les lettres du texte crypt du dcalage prcdemment calcul
- Afficher le texte original

Pour crypter le texte, il sagit uniquement de choisir un dcalage gard secret et dappliquer ce dcalage toutes les
lettres de notre texte original (par exemple, si on choisit un dcalage de 5, Lyon devient qdts )

Les problmes rencontrs avec le code Csar :

- Si le texte original contient plus despaces que de E le dcryptage sera impossible, nous avons donc utilis
une fonction permettant de supprimer tous les espaces dun texte trs rapidement .

- Nous avons remarqu que lorsque lon souhaite appliquer un dcalage au texte compris entre 20 et 44, le
dcryptage du texte ne se fait pas intgralement. Le dcryptage sarrte sur le caractre cod par le numro
ASCII 10, qui correspond line feed soit fin de ligne . Nous navons cependant pas eu le temps de
chercher plus loin les causes ce problme.

1
CRYPTER UN TEXTE :

La fonction cesar_chiffre :
Paramtres (x, d) avec x le numro de la
lettre coder et d le dcalage que lon
souhaite appliquer notre texte
On utilise le modulo 128 car on largit notre
cryptage tous les caractres donc la
table ASCII qui comporte 128 caractres et
non plus aux simples lettres de lalphabet.

La fonction cesar_crypt :
Paramtres (texte, d) avec texte le texte
que lon souhaite crypt et d le dcalage
que lon souhaite appliquer ce texte
Ord(letr) permet de convertir la lettre
en son numro ASCII tandis que
chr(nbr_cryp) permet de convertir un
numro ASCII en une lettre

On ouvre par la suite le fichier qui


contient le texte que lon souhaite crypt
et on y applique la fonction cesar_crypt
avant de le faire affich.

On cre un nouveau fichier qui contient


le texte crypt. Il est important de louvrir
en mode w afin que le celui-ci efface
ce quil sy trouvait avant et crive le
nouveau texte crypt chaque fois la
place de lancien.

2
DECRYPTER UN TEXTE :

La fonction compte :
Paramtre (fichier) avec fichier le nom du fichier
dcrypter

On ouvre le fichier contenant le texte crypt et de lafficher


afin que lutilisateur le visualise.

On cre ensuite un tableau, nomm A, contenant 128 zros


pour signifier quil est vide (il faudrait ventuellement crer
un code permettant de dire que le tableau est vide sans avoir
besoin de mettre 128 zros).

La boucle tant que permet dassocier chaque lettre code


son code ASCII

La boucle For permet de trouver la lettre qui revient le


plus de fois dans le tableau A. On fait afficher sa frquence
ainsi que son numro ASCII.

Maintenant que lon connait la lettre qui revient le plus


souvent dans le texte crypt grce la table ASCII,
on peut en dduire le dcalage appliqu au texte
grce au numro ASCII de E .

La fonction cesar_dechiffre :
Maintenant que nous connaissons le dcalage, il
suffit dutiliser la fonction inverse la fonction de
cryptage qui consiste enlevant le dcalage la
place de le rajouter.
On ouvre ensuite le fichier contenant le texte crypt
auquel on applique la fonction cesar_decrypt pour
finalement afficher le texte.
Enfin, on cre un nouveau fichier, toujours avec le
mode w afin dy enregistrer le texte dcrypt.
On demande aussi au programme de nous afficher le
texte original qui a t crypt afin de vrifier si notre
dcryptage est juste.

3
2. LE CHIFFREMENT AFFINE
Le cryptage par chiffrement affine consiste crypter un texte grce une fonction du type AX + B et non plus par un
simple chiffre appel dcalage. Voici la mthode qui permet de crypter un texte grce au chiffrement affine :

Associer chaque lettre de lalphabet son rang numrique soit :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Choisir un mot coder, par exemple, CHIEN


Retranscrire le mot CHIEN en srie de nombre grce au tableau ci-dessus.
CHIEN 2, 7, 8, 4, 13
Choisir la cl de cryptage, soit le A et le B de la fonction affine Y = AX + B, par exemple A = 10 et B = 15
Appliquer la fonction affine en prenant A = 10, B = 15, et X prend les valeurs successives 2,7,8,4,13
10 x 2 + 15 = 35
10 x 7 + 15 = 85
10 x 8 + 15 = 95
10 x 4 + 15 = 55
10 x 13 + 15 = 145
Prendre le reste de la division par 26 des valeurs trouves
35 = 26 x 1 + 9 9
85 = 26 x 3 + 7 7
95 = 26 x 3 + 17 17
55 = 26 x 2 + 3 3
145 = 26 x 5 + 15 15
Associer les restes trouvs aux valeurs du tableau ci-dessus
9J
7H
17 R
3D
15 P
Rcrire le mot cod clairement : JHRDP

Pour ce qui est du dcryptage, la tche est beaucoup plus complexe et repose entirement sur larithmtique. Il sagit
de trouver la fonction inverse de AX + B = Y [128].

Trouver les deux caractres qui reviennent le plus souvent dans le texte crypt et en dduire leur numro
ASCII (par exemple, Y1 = 52 et Y2 = 40)
On sait que la lettre ayant la plus grande frquence dapparition en langue latine est le E puis en seconde
place, la lettre A suivi par le I
Attribuer Y1 X1 qui correspond au numro ASCII de E soit 101 et attribuer Y2 X2 qui correspond au
numro ASCII du A soit 97
On obtient deux quations de la forme A x X1 + B = Y1[128] et A x X2 + B = Y2[128]
12
On en dduit une expression de A qui serait de la forme [128]
12
IMPORTANT : il faut faire modulo [128] chaque rsultat trouv !!
Maintenant que lon connait une expression pour A, nous pouvons en dduire celle de B qui serait de la forme
12
Y2 - x X2 [128]
12
Nous connaissons toutes les valeurs ncessaires puisque nous les avons dtermins en amont, il suffit juste
de les remplacer dans les expressions de A et de B afin de dterminer la fonction inverse qui permet de
dcrypter le texte.

4
CRYPTER UN TEXTE :

La fonction affine_chiffre :
Il sagit de la mme fonction que pour le code
Csar hormis que lon a une fonction affine qui
crypte donc de la forme AX+ B. A et B sont
dterminer par celui qui crypte et doivent tre
gards secrets.

La fonction affine_crypt :
Cest exactement la mme fonction que celle
utilise dans le Code Csar.

On ouvre le fichier crypter, on le stocke dans


une variable puis on le convertit en une chane
de caractres.

On demande lutilisateur de saisir la valeur du


A et de B quil souhaite pour crypter son texte.

On fait afficher le texte le texte crypt puis on


lenregistre dans un fichier que lon cre

5
DECRYPTER UNE FONCTION :

La fonction compte :

Il sagit de la mme fonction que celle utilise dans le


Code Csar.
Les tapes qui suivent sont les mmes, les seules nouvelles
lignes sont celles permettant de trouver la deuxime lettre
qui revient le plus souvent dans le texte.

Enfin vient le calcul du dcalage qui lui est totalement


diffrent. On utilise les formules donnes prcdemment (cf.
page 4).

Pour trouver on divise directement par 4 car la diffrence des


nombres ASCII de A et de E est toujours gale 4 (101 97).

On prend la valeur absolue de Y1 Y2 (abs) car cette valeur


peut tre ngative et fausserait tout le calcul.

Pour ce qui est de la fonction inverse qui permet de dcrypter, nous navons pas eu le temps de travailler dessus en
programmation. Nanmoins, nous sommes maintenant capables de dcrypter un texte la main, de faon
mathmatique, car nous connaissons la valeur de A et de B.

6
Les problmes rencontrs avec le chiffrement affine :
- Le raisonnement avec les modulos est compliqu, toutes les rgles de calcul habituelles ne sont plus valables
pour certaines avec le modulo. De plus, il faut le prendre en compte chaque rsultat trouv ! AUCUN
RESULTAT NE DOIT ETRE PRIS SANS AVOIR FAIT LE MODULO

- Comme pour le code csar, nous avons eu besoin de supprimer les espaces mais nous avons galement dcid
de supprimer tous les caractres avec accents pour faciliter le cryptage.

- Il nous a dj fallu intgrer correctement la mthode de rsolution mathmatique avant de passer la


programmation ce qui nous a pris du temps.

- ATTENTION : notre programme permettant de trouver les valeurs de A et B ne marche quavec certaines
valeurs, par exemple les couples (3,5), (2 ,2), (5,6) fonctionnent tandis que (10,11) ne marchent pas.

En conclusion, nous pourrions dire que ce projet nous a aid mieux se servir de Python. Nous avons acquis les bases
de la cryptographie classique grce au Code Csar et au chiffrement affine. Quelques amliorations pourraient tre
apportes en plus nos programmes afin de les rendre plus simples et plus courts.

Nous remercions M Saber, notre professeur rfrant, pour nous avoir accompagn dans lavancement de notre projet.
Nous remercions galement M Pellegrini, professeur de programmation, pour nous avoir aid dans la partie
programmation pour le chiffrement affine.

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy