Cryptographie avec Python
💻 Travail n° 1 Chiffrement de César
Le chiffrement de César est une méthode simple de chiffrement qui consiste à décaler les lettres de l’alphabet d’un certain nombre de positions. Par exemple, avec un décalage de 3, ‘a’ devient ‘D’, ‘b’ devient ‘E’, etc.
a | b | c | d | e | f | g | h | i | j | k | l | m | … | v | w | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
… |
Y |
Z |
A |
B |
C |
Par convention, en cryptologie, le texte en clair est écrit en minuscules et le texte chiffré est écrit en MAJUSCULES. |
🎯 Travail à faire :
-
Donner le résultat du chiffrement du mot “demain” avec l’algorithme de César utilisant un décalage de 3 lettres
-
Déterminer le code Python qui permet le chiffrement d’une lettre de l’alphabet avec l’algorithme de César utilisant un décalage de 3 lettres.
-
Le code ASCII d’un caractère peut être obtenu avec la fonction
ord()
print(f"ASCII('a') : {ord('a')}") // affiche : ASCII('a') : 97
Inversement, le caractère correspondant à un code ASCII peut être obtenu avec la fonction
chr()
print(f"CHR(97) : {chr(97)}") // affiche : CHR(97) : a
-
Ce qui précède permet de déterminer que le rang d’une lettre minuscule <car> dans l’alphabet peut être obtenu avec
ord(<car>) - ord('a')
puisque les codes ASCII des lettres de l’alphabet se succèdent.print(f"RANG('c') : {ord('c') - ord('a')}") // affiche : RANG('c') : 2
-
L’alphabet comportant 26 lettres, on pourra utiliser l’opérateur modulo (→
%
) pour gérer le cas des lettres ‘x’, ‘y’,'z'
qui, une fois chiffrées, donnent'A'
,'B'
,'C'
-
-
Coder un script Python qui permettra de chiffrer avec l’algorithme de César (décalage de 3 lettres) le texte saisi par l’utilisateur.
Ce script devra :
-
supprimer les espaces du texte en clair avant de le chiffrer
-
convertir en minuscules le texte à chiffrer
-
comporter une fonction
chiffrer_cesar(texte_clair)
. -
Afficher le texte chiffré en MAJUSCULES
-
On peut supprimer les espaces d’une chaine de caractères avec la méthode
replace()
str = ' Python est un langage très facile ' print(str.replace(" ", "")) // Affiche : Pythonestunlangagetrèsfacile
-
Les méthodes
lower()
etupper()
permettent respectivement de convertir en minuscules et en majuscules le texte auquel elles s’appliquent.str = "Hello WORLD" (1) print(f"majuscules -> {str.upper()}") print(f"minuscules -> {str.lower()}") // Affiche : // majuscules -> HELLO WORLD // minuscules -> hello world
1 texte mélant minuscules et majuscules
-
-
Faire évoluer le script pour que la fonction
chiffrer_cesar()
prenne un 2ème paramètre qui exprime le décalage désiré (valeur comprise entre 1 et 26).
💻 Travail n° 2 Déchiffrement de César
🎯 Travail à faire :
-
Faire un script qui permet cette fois-ci de déchiffrer un message chiffré avec l’algorithme de César.
-
Modifier le script pour qu’il trouve seul le texte en clair et le décalage utilisé pour le cryptogramme suivant : “VQHUQZEBAGDUZTGYQDOQEMDZAZBAGDXQXAGQDXQYMXCGQRAZFXQETAYYQEHUFMBDQEQGJXQNUQZQEFEAGHQZFQZFQDDQMHQOXQGDEAE”
Indice : ce texte fait partie de l’oraison funèbre de Marc Antoine lors des funérailles de César ⇒ le mot “cesar” doit sûrement apparaitre dans le texte en clair.
.
🞄 🞄 🞄