Crypter un message – Bac théorique – Section informatique – 2019

Bac Info 13-01-26
129 0

Sujet (Algo et programmation - Bac 2019)

Parmi les méthodes de chiffrement utilisant un mot-clé, on cite celle décrite ci-après qui permet de crypter un message msg ne dépassant pas 18 caractères et formé uniquement de lettres minuscules, de chiffres et d'espaces :

Etape1 : Remplir aléatoirement une matrice carrée Ml de dimension 6x6 par toutes les lettres alphabétiques minuscules ainsi que tous les chiffres.

NB :Les indices des lignes et des colonnes de la matrice M1 sont les lettres A, B, C, D, E et F.

Etape2 : Générer un message intermédiaire msgi, en concaténant les résultats du chiffrement de chaque caractère du message msg. Le résultat du chiffrement d'un caractère est la concaténation de l'indice de la ligne avec J'indice de la colonne de la case contenant le caractère à chiffrer.

Le caractère espace ne sera pas chiffré.

Etape3 :Remplir une deuxième matrice M2 de taille 7x6 caractères en mettant dans :

la première ligne, les lettres d'un mot-clé formé de 6 lettres majuscules,

le reste des lignes, Je message msgi caractère par caractère en commençant par la première case de la deuxième

NB :Chaque case vide de la matrice M2 sera rem pl ie par le caractère espace.

Etape4 : Trier les éléments de la première ligne de M2 scion un ordre alphabétique croissant, sachant que tout déplacement d'un élément entraîne le déplacement de tous les éléments de la colonne correspondante.

Etape5 : Concaténer les lettres de la matrice M2, colonne par colonne en commençant par la 1ère colonne et sans considérer les éléments de la lere ligne, pour obtenir le message, chiffré final.

Exemple :

Pour msg = "promotion bac 2019" et le mot-clé "CHAISE"

Etape 1 :La matrice M1 est remplie aléatoirement comme suit :

Travail demandé

On se propose d'écrire un programme permettant :

- de saisir un message msg ne dépassant pas 18 caractères et formé uniquement de lettres minuscules, de chiffres et d'espaces.

- de saisir un mot-clé formé de 6 lettres

- de crypter le message msg selon la méthode de chiffrement décrite précédemment.

NB : On dispose d'un module Initialisation(Ml) qui permet de remplir aléatoirement la matrice carrée Ml comme décrit dans l'étape 1 et que le candidat peut appeler dans sa solution sans le développer.

1.  Analyser le problème en le décomposant en modules.

2. Ecrire les algorithmes des modules envisagés.

 

Solution Algorithmique

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

- la procédure remplir_matrice_m1()

- la procédure afficher_matrice()

- la fonction verif_msg()

- la fonction saisie_msg()

- la fonction crypter_etape1()

- la fonction verif_cle()

- la fonction saisie_cle()

- la procédure remplir_matrice_m2()

- la procédure tri_matrice()

- la fonction crypter_etape2()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
m1 matrice
msg chaîne
msg_crypte chaîne
cle chaîne
m2 matrice

 

La procédure remplir_matrice_m1

Cette procédure sert à remplir une matrice carrée 6×6 (m1) avec des caractères alphanumériques choisis aléatoirement, sans répétition.

Déclaration des objets

Objet Type / Nature
ch chaîne
i entier
j entier

 

La procédure afficher_matrice

Cette procédure permet d’afficher à l’écran une matrice m de taille l × c de manière lisible, ligne par ligne.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction verif_msg

Cette fonction sert à vérifier la validité d’un message (chaîne de caractères) selon des règles bien précises.

Règles vérifiées :

- La longueur du message doit être comprise entre 1 et 18 caractères.

- Chaque caractère du message doit être : une lettre minuscule (a à z), ou un chiffre (0 à 9), ou un espace (' ').

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_msg

Cette fonction permet de saisir un message valide auprès de l’utilisateur, en s’assurant qu’il respecte les règles définies par la fonction verif_msg.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La fonction crypter_etape1

Cette fonction réalise la première étape du cryptage d’un message en utilisant une matrice 6×6 (m) contenant des caractères alphanumériques.

Cette fonction transforme chaque caractère du message en un couple de lettres (A–F) représentant sa position dans une matrice de chiffrement 6×6, tout en conservant les espaces.

Déclaration des objets

Objet Type / Nature
msg_crypte chaîne
k entier
i entier
test booléen

 

La fonction verif_cle

Cette fonction permet de vérifier la validité d’une clé de chiffrement.

Règles vérifiées :

- La clé doit contenir exactement 6 caractères.

- Chaque caractère de la clé doit être une lettre majuscule (A à Z).

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_cle

Cette fonction permet de saisir une clé de chiffrement valide auprès de l’utilisateur, en s’assurant qu’elle respecte les règles définies par la fonction verif_cle.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir_matrice_m2

Cette procédure sert à construire la matrice de chiffrement m2 (7 × 6) à partir de la clé et du message crypté.

Principe :

La matrice m2 est organisée ainsi :

1ʳᵉ ligne : la clé de chiffrement (6 lettres).

6 lignes suivantes : le message crypté, réparti ligne par ligne.

Le message est complété par des espaces si sa longueur est inférieure à 36 caractères.

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier

 

La procédure tri_matrice

Cette procédure sert à trier les colonnes de la matrice m2 selon l’ordre alphabétique de la clé, qui se trouve dans la première ligne de la matrice.

Elle réorganise les colonnes de la matrice en fonction de la clé triée, ce qui constitue une étape classique du chiffrement par transposition.

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier

 

La fonction crypter_etape2

Cette fonction réalise la deuxième étape du cryptage en produisant le message crypté final à partir de la matrice m2.

Elle transforme la matrice triée en une chaîne de caractères en lisant les données verticalement, ce qui finalise le chiffrement par transposition.

Déclaration des objets

Objet Type / Nature
i entier
j entier
msg_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

Photos des articles

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