Le but de cette activité est de vous familiariser avec le Chiffrement/Déchiffrement d'un texte à l'aide de la méthode dîte de César.
Depuis l'antiquité, les hommes ont toujours éprouvé le besoin de modifier un texte afin de dissimuler son contenu à la vue des personnes non autorisées. Cette science s'appelle la cryptologie. L'un des premiers chiffrements utilisés est le "code de césar" qui doit son nom à l'empereur romain Jules César. Il consiste à décaler chaque lettre de l'alphabet de trois rangs.
Le mot "CRYPTOGRAPHIE" après chiffrement devient "FUBSWRJUDSKLH".
Le message "FRGH GH FHVDU" après l'opération de (dé)chiffrement devient "CODE DE CESAR".
On peut, de la même façon, faire un chiffrement en décalant les lettres de l'alphabet d'un autre nombre de rangs. Ce nombre sera appelé la clé de chiffrement. Par exemple, un"codage de césar" de clé 8, signifie que l'on décale chaque lettre de 8 rangs. A est remplacé par I, B par J, etc...
Nous allons définir une fonction msg_caesar permettant de réaliser ce type de chiffrement.
Voici le squelette de notre fonction :
def msg_caesar(msg): return msg print(msg_caesar("le chat est noir"))
La casse d'un caractère correspond à son écriture en majuscule ou minuscule.
La méthode .upper()
permet de convertir une chaîne de caractères en majuscule.
Modifiez votre fonction pour que le résultat de votre traitement soit la chaîne en MAJUSCULE
(si besoin cherchez des exemples d'utilisation de cette méthode sur Internet !).
def msg_caesar(msg): # Jeu d'essai print("Pass test1 --> ",msg_caesar('le chat est noir')=='LE CHAT EST NOIR')
Dans la suite, dans un esprit de simplification, nous travaillerons uniquement sur un texte en MAJUSCULE.
On suppose également que le texte ne contient que des lettres et des espaces.
Modifier votre fonction afin qu'elle retourne votre chaîne de caractère avec un chiffrement de césar (décalage d’un seul caractère : exemple : 'A' --> 'B')
Et également dans un soucis de simplificaton,les espaces sont remplacés par ... des espaces.
Pour réaliser ce chiffrement vous pouvez au choix :
ord(c)
et chr(code)
def msg_caesar(msg): # Jeu d'essai print("Pass test1 --> ",msg_caesar('le chat est noir')=='MF DIBU FTU OPJS')
Maintenant que vous êtes en mesure de chiffrer votre message,
vous devez fournir une fonction de (dé)chiffrement caesar_msg(msg)
!
Votre programme devrait ressembler à ceci :
def msg_caesar(msg): def caesar_msg(msg): # Jeu d'essai print("Pass test1 --> ",caesar_msg('MF DIBU FTU OPJS')=='LE CHAT EST NOIR') print("Pass test2 --> ",caesar_msg(msg_caesar('le chat est noir'))=='LE CHAT EST NOIR')
Modifiez votre programme afin de pouvoir saisir une clé de chiffrement/(dé)chiffrement, correspondant à un codage de César avec un décalage fonction de la valeur de cette clé (cette valeur sera comprise entre 1 et 20)
def msg_caesar(msg,k): def caesar_msg(msg,k): # Jeu d'essai print("Pass test1 --> ",caesar_msg('MF DIBU FTU OPJS',3)=='LE CHAT EST NOIR') print("Pass test2 --> ",caesar_msg(msg_caesar('le chat est noir',3),3)=='LE CHAT EST NOIR')
Maintenant que vos fonctions de chiffrement et déchiffrement sont opérationnelles, on vous demande de réaliser une interface graphique comme celle présentée ci-dessous :
La zone de saisie clé
indique la valeur du décalage
choisi. Attention , la valeur de cette clé doit être comprise entre 1 et 20, il
vous faudra donc vérifier la valeur de la clé saisie par l’utilisateur et
si celle-ci est incorrecte avertir celui-ci.
Vous ne devez lancer le chiffrement que si cette valeur est correcte.
Vous devez ecrire une fonction permettant de décrypter un texte (chiffrement de césar).
Décrypter consiste à retrouver le texte original à partir d’un message chiffré sans posséder la clé de (dé)chiffrement.
Il vous faut donc mettre en place une solution pour casser ce code.