Bonjour à tous.
Ayant pour but de m’entraîner à manipuler du code C++, je suis tombé sur ceci :
http://www.primenumbers.net/Renaud/fr/crypto/XOR.htm
J'ai donc voulu essaye d'appliquer cette méthode de codage de texte sur un fichier, ce qui m'à mené à pondre ce petit programme dont voici le code :
J'aimerais avoir votre avis sur ce code, car je me retrouve avec un petit problème lors du décodage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream file("fichier.txt" , ios::in|ios::binary); string key = "nimp"; char texteOrigin, texteConv[10]; for (int i(0), j(0); i < 10;i++, j++) { file.read((char *)&texteOrigin, sizeof(char)); if (j > key.size()) { j = 0; } texteConv[i] = texteOrigin ^ key[j]; } file.close(); cout << texteConv << endl; ofstream fileenc("fichier.txt", ios::out|ios::trunc); fileenc << texteConv; system("pause"); return 0; }
à savoir : pour tester ce petit programme, j'ai créé un fichier nommé "fichier.txt".
Ce fichier contient simplement cette ligne : "azertyuiop".
Le codage ce passe bien (je pense).
Mais le décodage... Aie :
Je me retrouve bien avec mes 10 caractères "azertyuiop" en début de mon fichier "fichier.txt", mais ils sont suivit de caractères assez "bizarres", je ne sais pas si c'est pas les caractères résultant du codage précédent.
En mode pas à pas, ma variable texteConv contient bien RIEN-QUE mes caractères "azertyuiop" lorsque je demande au programme de me l'enregistrer dans le fichier txt (ligne d'instruction N°28).
donc je ne comprends pas trop ce qu'il ce passe.
ps:
Texte dans fichier.txt non codé : "azertyuiop"
Texte dans fichier.txt codé : "tpÌÌÌÌÌÌÌÌÌÌÌÌÌpÌÌÌÌÌÌÌÌ"
Texte dans fichier.txt décodé : "azertyuiopÌÌÌÌÌÌÌÌÌÌÌÌÌpÌÌÌÌÌÌÌÌà"2nimp"
(sans les " aux extrémités).
Merci !
Partager