Cryptage des messages – Bac pratique – Section informatique – 2014

Bac Info 02-01-26
17 0

Sujet (Algo et programmation - Bac 2014)

On se propose de crypter un message, formé uniquement par des lettres majuscules et des espaces, en utilisant la méthode de chiffrement de Polybe qui consiste à :

- ranger, dans une matrice canée de dimension 5x5, les lettres d'un mot-clé donné suivies des lettres restantes de l'alphabet dans l'ordre, à l'exception de la lettre "W". Le mot-clé est une chaîne de caractères formée uniquement de L lettres majuscules, sans doublons et ne contenant pas la lettre "W" (avec 3 < L < 10).
- remplacer chaque lettre du message à crypter par les coordonnées de sa position dans la matrice (le numéro de la ligne suivi du numéro de la colonne), sachant que le caractère espace ne subit aucun cryptage et la lettre "W" sera remplacée par les coordonnées de la lettre "V".
Exemple : Pour le mot-clé "MYSTER", on construit la matrice suivante:
Le cryptage du message "CHERCHER POLYBE DANS WIKIPEDIA" sera
"2433152124331521 45444212231U5224313 533441344515253422"
Où le mot "WIKIPEDIA" est crypté comme suit
"533441344515253422" car "W" est remplacé par "53" (les coordonnées de la lettre "V"), "1" est remplacé par "34", "K" est remplacé par "41", "P" est remplacé par "45", "E" est remplacé par "15", "D" est remplacé par "25" et "A" est remplacé par "22".

Travail demandéEcrire un progranune en Python permettant de crypter un message donné selon un mot-clé donné en respectant les contraintes cités ci-dessus selon la méthode de chiffrement de Polybe et de stocker dans un fichier texte "Mess.Crypte.txt" le résultat de cryptage obtenu.

 

Solution Algorithmique

Dans cet algorithme, On va utiliser quatre fonctions et trois procédures:

- la fonction verif_mot_cle()

- la fonction saisie_mot_cle()

- la fonction verif_message()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la fonction recherche_coordonnee()

- la procédure crypter_message()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
mot_cle chaîne
message chaîne
m matrice

 

La fonction verif_mot_cle

La fonction verif_mot_cle(ch) vérifie que le mot-clé est composé uniquement de lettres majuscules distinctes, différentes de 'W', et de longueur comprise entre 3 et 10.

La fonction examine les lettres une par une.

À chaque étape :

elle vérifie que la lettre : est une majuscule, n’est pas 'W' et n’apparaît pas ailleurs dans le mot restant.

Si une lettre ne respecte pas ces conditions, la vérification s’arrête.

Si toutes les lettres passent les tests jusqu’à la fin du mot, le mot est valide.

Déclaration des objets

Objet Type / Nature
c caractère

 

La fonction saisie_mot_cle

Cete fonction saisie_mot_cle() garantit que le programme ne travaille qu’avec un mot-clé valide, en obligeant l’utilisateur à corriger sa saisie si nécessaire.

1- La fonction demande à l’utilisateur de saisir un mot-clé à l’aide de la fonction lire().

2- Elle appelle la fonction verif_mot_cle(ch) pour vérifier si le mot-clé respecte les règles définies (longueur, majuscules, pas de répétition, pas de 'W', etc.).

3- Boucle de répétition : tant que verif_mot_cle(ch) retourne False, la fonction redemande à l’utilisateur de saisir un nouveau mot-clé.

L’utilisateur ne peut donc pas continuer tant que le mot-clé est invalide.

4- Retour du résultat: une fois un mot-clé valide saisi, la fonction le retourne.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La fonction verif_message

La fonction verif_message(ch) sert à valider un message composé uniquement de lettres majuscules et d’espaces, sans aucun autre caractère.

1- Initialisation : i = 0 : on commence à vérifier le message caractère par caractère depuis le début.

2- Boucle de vérification

La boucle parcourt tous les caractères sauf le dernier.

À chaque étape, elle vérifie que le caractère courant est : soit une lettre majuscule (A à Z) ou un espace

3- Après la boucle, la fonction vérifie que le dernier caractère respecte aussi la même règle.

4- Résultat retourné

Vrai : si tous les caractères du message sont des majuscules ou des espaces

Faux : dès qu’un caractère interdit est rencontré (minuscule, chiffre, symbole, etc.)

Déclaration des objets

Objet Type / Nature
i entier

La fonction saisie_message

Cette fonction sert à valider un message composé uniquement de lettres majuscules et d’espaces, sans aucun autre caractère.

1- La fonction demande à l’utilisateur d’entrer un message à crypter à l’aide de input().

2- Elle appelle verif_message(ch) pour vérifier que le message : ne contient que des lettres majuscules et éventuellement des espaces

3- Tant que verif_message(ch) retourne Faux, la fonction redemande à l’utilisateur de saisir le message. Cela empêche le programme de continuer avec un message invalide.

4- Retour du message: dès qu’un message valide est saisi, il est retourné par la fonction.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir_matrice 

Le rôle de cette procédure est de construire une matrice de chiffrement 5×5 en utilisant un mot-clé, puis en la complétant avec le reste de l’alphabet, selon des règles précises.

Plus précisément, elle sert à :

1- placer les lettres du mot-clé en premier dans la matrice, de gauche à droite et de haut en bas.

2- éliminer toute répétition de lettres, en s’assurant qu’une lettre déjà utilisée n’apparaît plus.

3- compléter la matrice avec les autres lettres de l’alphabet, dans l’ordre alphabétique.

4- exclure la lettre “W” de l’alphabet utilisé.

Au final, la matrice obtenue contient 25 lettres différentes, toutes en majuscules, et constitue une clé de chiffrement qui sera utilisée par la suite pour coder ou décoder un message.

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier
l entier

 

La procédure afficher_matrice 

Cette procédure permet d’afficher les éléments d’une matrice carrée M de taille 5x5.

1- La procédure affiche un message indiquant l’affichage de la matrice.

2- Elle parcourt la matrice ligne par ligne à l’aide de deux boucles imbriquées.

3- Les éléments d’une même ligne sont affichés sur la même ligne, séparés par des espaces.

4- Après chaque ligne, un retour à la ligne est effectué pour conserver la forme matricielle.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction recherche_coordonnee

Le rôle de la fonction recherche_coordonnee(m, c) est de localiser une lettre donnée dans une matrice 5×5 et d’en retourner les coordonnées.

1- Cette fonction parcourt la matrice ligne par ligne et colonne par colonne.

2- Elle cherche la lettre c dans la matrice m.

3- Dès que la lettre est trouvée, elle repère son numéro de ligne (i) et son numéro de colonne (j)

4- Elle retourne ces deux informations sous forme d’une chaîne de caractères.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure crypter_message

Le rôle de la procédure crypter_message(ch) est de chiffrer un message clair en utilisant la matrice de Polybe, puis d’enregistrer et d’afficher le message chiffré.

1- Elle parcourt le message caractère par caractère.

2- Pour chaque caractère :

- l’espace est conservé tel quel, sans chiffrement.

- la lettre W est traitée comme la lettre V et remplacée par ses coordonnées dans la matrice.

- toute autre lettre majuscule est remplacée par les coordonnées (ligne, colonne) correspondant à sa position dans la matrice de Polybe.

3- Le message chiffré obtenu est affiché à l’écran et enregistré dans le fichier texte Mess_Crypte.txt.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
ch_crypter chaîne

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info