pythonListSelfTest1
Chiffrement/Décriffrement d'un texte

Présentation

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.

cesar

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...

Fonction msg_caesar(msg)

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"))	  
	  

Changement de casse

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.

Chiffrement du texte

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 :

	
def msg_caesar(msg):

	
# Jeu d'essai
print("Pass test1 --> ",msg_caesar('le chat est noir')=='MF DIBU FTU OPJS')
	

Déchiffrer notre texte

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')
	

Chiffrement de césar avec décalage variable

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')
	

Mise en place d'une IHM

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 :

cryptage2

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.

Décrypter le message : Cryptanalyse

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.


Ressources :

  1. Vocabulaire .
  2. Wikipedia (vocabulaire) .
  3. chiffre de César (haltode.fr).
  4. chiffre de Vigenere (haltode.fr).
  5. chiffre de Vernam (haltode.fr).