Cryptage fichier – Bac pratique – Section informatique – 2017

Bac Info 09-01-26
18 0

Sujet (Algo et programmation - Bac 2017)

Soit "Source.txt" un fichier texte, dont chaque ligne est composée d'au maximum 100 caractères.

On se propose de réaliser le cryptage du contenu du fichier "Source.txt", ligne par ligne, pour générer un deuxième fichier texte nommé "Crypt.txt" en utilisant une clé de cryptage constituée de lettres majuscules distinctes.

Le principe de cryptage d'une ligne du fichier "Source.txt" est le suivant :

- ajouter, si c'est nécessaire, des espaces à la fin de la ligne à crypter pour que sa longueur soit multiple de celle de la clé,

- distribuer les caractères de la ligne à crypter, après ajout d'espaces, dans une matrice M de L lignes et C colonnes en commençant par le remplissage de la première ligne de la matrice, puis la deuxième ligne et ainsi de suite. C et L représentent respectivement la ongueur de la clé de cryptage et le nombre de lignes remplies de la matrice M,

- former la ligne cryptée par la concaténation des caractères des colonnes de la matrice M en commençant par la première et en ajoutant au début de chacune la lettre de la clé ayant le même indice.

Travail demandé :

- En utilisant l'éditeur de texte disponible (Bloc-notes, Notepad, Notepad++, ...), créer dans le dossier de travail le fichier texte "Source.txt" et y saisir le contenu présenté dans l'exemple en respectant le contenu de chaque ligne.

- Ecrire un programme en Python intitulé "Cryptage" permettant :

- de saisir une clé de cryptage constituée de lettres majuscules distinctes et ayant une longueur appartenant à l'intervalle 15,101,

- de crypter le contenu du fichier "Source.txt" pour générer le fichier "Crypt.txt" en utilisant le principe de cryptage décrit précédemment,

- d'afficher le contenu du fichier "Crypt.txt".

 

Solution Algorithmique

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

- la fonction saisie_lignes()

- la fonction verif_distinct()

- la fonction verif_cle()

- la fonction saisie_cle()

- la procédure remplir_fichier_source()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la fonction crypter()

- la procédure crypter_fichier()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
nbr_lignes entier
cle entier
n n

 

La fonction saisie_lignes

Cette fonction permet de demander à l’utilisateur de saisir le nombre de lignes du fichier source, en s’assurant que la valeur saisie est un entier strictement positif.

Elle lit une valeur entière saisie au clavier.

Elle vérifie que cette valeur est supérieure à 0.

Si la valeur est invalide (n ≤ 0), elle redemande la saisie jusqu’à obtenir une valeur correcte.

Elle retourne le nombre de lignes valide, qui sera utilisé pour déterminer combien de lignes seront écrites dans le fichier Source.txt.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction verif_distinct

Cette fonction permet de vérifier que tous les caractères d’une chaîne ch sont distincts, c’est-à-dire qu’aucun caractère ne se répète.

1- Elle compare chaque caractère de la chaîne avec le reste de la chaîne.

2- Tant que le caractère courant n’apparaît pas dans la suite de la chaîne, elle passe au caractère suivant.

3- Si un caractère est trouvé une seconde fois, la vérification s’arrête.

4- Valeur retournée :

Vrai : si tous les caractères de la chaîne sont différents (aucune répétition).

Faux : s’il existe au moins un caractère répété.

Déclaration des objets

Objet Type / Nature
c caractère

 

La fonction verif_cle

Cette fonction teste la validité d’une clé de cryptage en vérifiant sa longueur, l’unicité de ses caractères et le fait qu’elle ne contient que des lettres majuscules.

1- La fonction commence par vérifier la longueur de la chaîne et l’absence de caractères répétés à l’aide de la fonction verif_distinct.

2- Ensuite, elle parcourt la chaîne pour s’assurer que chaque caractère est une lettre majuscule.

3- Si toutes les conditions sont respectées, elle retourne Vrai, sinon elle retourne Faux.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_cle

Cette fonction assure la saisie contrôlée d’une clé de cryptage valide en répétant la saisie jusqu’à obtention d’une clé conforme aux critères définis.

1- Elle demande à l’utilisateur de saisir une clé.

2- Elle vérifie la validité de cette clé à l’aide de la fonction verif_cle.

3- Tant que la clé saisie est invalide, elle redemande une nouvelle saisie.

4- Dès qu’une clé valide est fournie, elle la retourne.

Déclaration des objets

Objet Type / Nature
cle chaîne

 

La procédure remplir_fichier_source

Cette procédure crée et remplit le fichier source en enregistrant un nombre donné de lignes saisies par l’utilisateur.

1- Elle ouvre (ou crée) le fichier Source.txt en mode écriture.

2- Elle demande à l’utilisateur de saisir n lignes de texte.

3- Chaque ligne saisie est écrite dans le fichier suivie d’un retour à la ligne.

4- Elle ferme le fichier à la fin de l’opération.

Déclaration des objets

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

 

La procédure remplir_matrice

Cette procédure transforme une ligne de texte en une matrice de caractères de dimensions adaptées à la clé, en complétant le message par des espaces si nécessaire.

1- Elle complète la ligne par des espaces si sa longueur n’est pas un multiple de la longueur de la clé.

2- Elle calcule le nombre de lignes réellement utilisées dans la matrice.

3- Elle place ensuite les caractères de la ligne ligne par ligne dans la matrice M.

Déclaration des objets

Objet Type / Nature
k entier
ligne chaîne
k entier
i entier
j entier

 

La procédure afficher_matrice

Cette procédure affiche à l’écran les éléments de la matrice de caractères ligne par ligne.

1- Elle parcourt la matrice selon le nombre de lignes l et de colonnes c.

2- Elle affiche chaque caractère de la matrice avec un espace entre les éléments.

3- Elle passe à la ligne après l’affichage de chaque ligne de la matrice.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction crypter

Cette fonction effectue le cryptage du message en lisant la matrice colonne par colonne et en intégrant la clé afin de produire le message chiffré.

1- Elle parcourt la matrice colonne par colonne.

2- Pour chaque colonne, elle ajoute d’abord le caractère correspondant de la clé.

3- Ensuite, elle concatène les caractères de la colonne de haut en bas.

4- Elle construit ainsi progressivement la chaîne message_crypte.

Déclaration des objets

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

 

La procédure crypter_fichier

Cette fonction effectue le cryptage du message en lisant la matrice colonne par colonne et en intégrant la clé afin de produire le message chiffré.

1- Elle parcourt la matrice colonne par colonne.

2- Pour chaque colonne, elle ajoute d’abord le caractère correspondant de la clé.

3- Ensuite, elle concatène les caractères de la colonne de haut en bas.

4- Elle construit ainsi progressivement la chaîne message_crypte.

Déclaration des objets

Objet Type / Nature
f_source fichier
f_crypt fichier
message chaîne
message_crypte chaîne
ligne chaîne
nbr_ligenes entier(variable globale)

 

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