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

Bac Info 13-01-26
13 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 :

Etape 5 :

Le message chiffré final est "FAAECFDBC  AACCEAC  ABAB  BBCCCDFABFCD  "

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 deux fonctions et trois procédures:

- la procédure remplir_matrice_m1()

- la procédure factoriel_premiers()

- la fonction calcul_ppcm()

- la procédure remplir_fichier()

- la procédure afficher_fichier()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Cette fonction permet de saisir un entier valide compris entre deux bornes inf et sup.

1- Elle demande à l’utilisateur de saisir un entier n.

2- Elle vérifie que n appartient à l’intervalle [𝑖𝑛𝑓,𝑠𝑢𝑝]

3- Si la valeur saisie n’est pas valide, la fonction redemande la saisie jusqu’à obtenir un entier correct.

4- Elle retourne finalement la valeur valide saisie par l’utilisateur.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure factoriel_premiers

Cette procédure permet de décomposer un nombre entier n en facteurs premiers et de stocker ces facteurs dans le tableau t.

1- Le tableau t est d’abord initialisé à 0 pour effacer les anciennes valeurs.

2- On commence la recherche des diviseurs à partir de 2, le plus petit nombre premier.

3- Tant que n est différent de 1 :

Si i divise n, alors : i est un facteur premier de n. Alors on divise n par i et on stocke i dans le tableau t

Sinon, on passe au diviseur suivant.

Déclaration des objets

Objet Type / Nature
index entier
k entier
i entier

 

La fonction calcul_ppcm

Cette fonction permet de calculer le Plus Petit Commun Multiple (PPCM) de deux nombres à partir de leurs facteurs premiers stockés dans les tableaux t1 et t2.

Principe de fonctionnement

1- Initialisation

i = 0 : sert à parcourir les deux tableaux.

ppcm = 1 : variable qui contiendra le PPCM final.

2- Parcours simultané des deux tableaux

Tant qu’on a des facteurs dans les deux tableaux (t1[i] != 0 et t2[i] != 0) :

Si les facteurs sont identiques, on multiplie le PPCM par ce facteur. Sinon, on multiplie le PPCM par les deux facteurs différents.

L’indice i est incrémenté pour passer au facteur suivant.

3- Ajout des facteurs restants

Si un tableau a encore des facteurs après la fin du parcours commun, on les multiplie au PPCM :

Tant que t1[i] != 0 → multiplie le PPCM par les facteurs restants de t1.

Tant que t2[i] != 0 → multiplie le PPCM par les facteurs restants de t2.

4- Retour du résultat

La fonction retourne la valeur finale du PPCM.

Déclaration des objets

Objet Type / Nature
i entier
ppcm entier

 

La procédure remplir_fichier

Cette procédure sert à remplir un fichier nommé F_PPCM.dat avec le PPCM de plusieurs couples de nombres saisis par l’utilisateur.

1- Affichage d’un message d’information

Il indique à l’utilisateur que le fichier va être rempli.

2- Ouverture du fichier

Le fichier est ouvert en mode écriture ("w").

Si le fichier existe déjà, son contenu est effacé.

3- Saisie des couples de nombres :

La procédure demande à l’utilisateur de saisir n couples de nombres.

La fonction saisie garantit que les nombres sont compris entre 1 et 1000.

4- Décomposition en facteurs premiers

Chaque nombre est décomposé en facteurs premiers.

Les facteurs sont stockés dans les tableaux t1 et t2.

5- Calcul du PPCM

La procédure utilise la fonction calcul_ppcm pour obtenir le PPCM du couple.

6- Écriture dans le fichier

Chaque résultat est écrit dans le fichier sous la forme : PPCM(a, b) = résultat

7- Fermeture du fichier

La procédure libère le fichier et sauvegarde toutes les données.

Déclaration des objets

Objet Type / Nature
a entier
b entier
ppcm entier
t1 tableau
t2 tableau
f fichier

 

La procédure afficher_fichier

Cette procédure sert à lire et afficher le contenu du fichier F_PPCM.dat créé précédemment, pour que l’utilisateur puisse voir les résultats des calculs de PPCM.

Déclaration des objets

Objet Type / Nature
f fichier
lignes chaîne
ligne 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