Cryptage message – Bac Pratique 2015 [ Algorithme + Python ]

Algo et Python 29-08-24
30 0

Travail demandé

Pour sécuriser l’envoi des messages, deux chercheurs cryptent leurs messages en utilisant le principe suivant :

1- Saisir le message à crypter msg, sachant qu’il est composé uniquement par des lettres.

2- Remplir un tableau T par les ordres alphabétiques des lettres de msg de façon à ce que T[i] lui correspond de msg[i] (sachant que « A » et « a » sont d’ordre 1, « B » et « b » sont d’ordre 2 ,…).

3- Remplacer chaque T[i] par (T[i])e mod (p*q) avec p,q et e 3 constantes ayant pour valeurs respectivement 17, 19 et 5.

Le tableau T ainsi obtenu représente le code de la chaine msg.

Exemple : pour la chaine msg= ‘’bonjour’’,

T :

2 15 14 10 15 21 18

En effet ‘’B’’ est d’ordre alphabétique 2, ‘’o’’ est d’ordre alphabétique 15,…

Après avoir codé en remplaçant chaque T[i] par (T[i])e mod (p*q) on obtient :

T

32 2 29 193 2 89 18

 

Ecrire un programme Phyton qui permet de saisir une chaine non vide formée uniquement par des lettres, de la crypter et d’afficher le tableau de code obtenu.

Solution Algorithmique

Pour crypter un message selon le principe décrit, vous pouvez suivre l'algorithme suivant :

1- Initialisation :

Définir les constantes p, q, et e avec les valeurs respectives p = 17, q = 19, et e = 5.

2- Saisie du message : Saisir la chaîne de caractères message.

3- Remplissage du tableau T :

Créer un tableau vide T de la même taille que le message.

Pour chaque lettre messsage[i] dans le message :

Convertir la lettre en ordre alphabétique en utilisant la formule suivante :T[i] = ord(Majus(message[i])) - 64.

4- Cryptage : Pour chaque élément T[i] du tableau :

Remplacer T[i] par T[i]e mod (p * q).

5- Affichage : Afficher le tableau crypté T.

Dans cet algorithme, On va utiliser 2 fonctions et 3 procédures :

Déclaration des objets

Objet Type / Nature
message entier
t tableau des entiers

La fonction verif_createTab

Cette fonction vérifie que le message saisi contient uniquement des lettres , divise le message en caractères et place chaque caractère dans une case d'un tableau T.

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure saisie_message

Cette procédure saisit le message et placer chaque caractère du message dans une case du tableau T

Déclaration des objets

Objet Type / Nature
ch chaine des caracteres

 

La fonction calcul

Cette fonction calcule la formule ne mod (p * q)

Déclaration des objets

Objet Type / Nature
i entier
m entier
e entier
p entier
q entier

 

La procédure afficher

Cette procédure affiche les éléments du tableau

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure crypter_message

Cette procédure crypte le tableau T

Déclaration des objets

Objet Type / Nature
i entier

 

Solution en Python

Exécution du programme

Solution en Python et Designer QT

Pour remplir un tableau d'entiers à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :

1- Découper la chaîne de caractères en sous-chaînes contenant les entiers.

2- Convertir chaque sous-chaîne en entier.

3- Ajouter chaque entier au tableau.

Pour créer une application en Python pour crypter un message, on va suivre ces étapes :

1- Créer l'interface graphique avec Qt Designer

a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.

b- Ajoutez ces widgets:

QLineEdit nommé 'ch' pour entrer des entiers .

QPushButton nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.

QPushButton nommé 'bt_crypter' pour exécuter le module crypter_message.

QLabel nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des caractères non alphabétique.

QLabel nommé 'tabt_label' pour afficher les éléments du tableau T.

Enregistrez le fichier avec l'extension .ui, par exemple tabtab-2.ui.

2- Créer le script Python pour l'application

Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.

Exécution du programme

1) Remplissage du tableau T par les rangs des lettres:

2) Crypter le tableau T :

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-Prof Info