Exercice : Cryptage de messages par conversion en base 8 et colonnes
Dans le cadre de la réalisation d’un projet scientifique, deux chercheurs résidant dans deux pays différents s’échangent des données sur Internet. Pour assurer la confidentialité de leur projet, les messages échangés sont cryptés.
Le message initial se compose au maximum de 50 lignes et chaque ligne contient 50 caractères au maximum. Ce message est stocké dans un fichier texte intitulé « TxtInit.txt » sur la racine du lecteur C:.
En supposant que ce texte est déjà saisi, on se propose de créer un deuxième fichier texte intitulé « TxtCryp.txt » contenant le message crypté de la manière suivante :
- 1ère étape : Remplir une matrice d’entiers MC par les codes ASCII (en base 10) des caractères du message initial. Chaque ligne de la matrice contiendra les codes ASCII des caractères d’une ligne du fichier « TxtInit.txt ». Le nombre de lignes de la matrice MC est égal au nombre de lignes du fichier « TxtInit.txt », et le nombre de colonnes est égal à la longueur (long_max) de la plus longue ligne du fichier. Pour les lignes ayant une longueur inférieure à long_max, on complète les cases restées vides par le code ASCII du caractère espace (qui est égal à 32).
- 2ème étape : Convertir, dans la même matrice, tous les éléments de MC en base 8.
- 3ème étape : Stocker dans « TxtCryp.txt » les colonnes de la matrice MC, de la colonne la plus à gauche à la colonne la plus à droite. Chaque colonne de la matrice MC occupera une ligne du fichier, et les éléments de cette ligne seront séparés par le caractère espace.
Exemple :
Si le fichier « TxtInit.txt » contient le texte suivant :
Test1
Merci
Alors les étapes de détermination du fichier « TxtCryp.txt » seront les suivantes :
- 1ère étape : À partir du fichier « TxtInit.txt », on obtient la matrice MC en base 10 :
0 1 2 3 4 5 6 0 66 111 110 106 110 117 114 1 84 101 115 116 49 32 32 2 77 101 114 99 105 32 32 (Où 66 est le code ASCII de « B », 111 celui de « o », … et 32 le code ASCII du caractère espace).
- 2ème étape : Après la conversion en base 8, on obtient la matrice MC suivante :
0 1 2 3 4 5 6 0 102 157 156 152 156 161 162 1 124 145 163 164 61 40 40 2 115 145 162 143 151 40 40 (Par exemple, 162 est la conversion en base 8 de $(114)_{10}$).
- 3ème étape : À partir de la matrice MC précédente, on obtient le fichier « TxtCryp.txt » contenant les colonnes sous forme de lignes (chaque ligne correspondant à une colonne de la matrice, de gauche à droite) :
102 124 115
157 145 145
156 163 162
152 164 143
156 61 151
161 40 40
162 40 40(La ligne n°3 (4ème ligne) du fichier « TxtCryp.txt » correspond à la colonne n°3 de la matrice MC).
Questions :
- Ecrire un algorithme du programme principal en respectant le procédé décrit précédemment et en le décomposant en modules.
- Ecrire un algorithme pour chaque module envisagé.