Bonjour tout le monde !
J'�tais entrain de r�aliser un programme permettant de crypter un message selon l�algorithme de Vigenere en C++.
A son lancement aucun probl�me probl�me ne s'affiche.
Le message est correctement crypt�, je l'affiche ensuite.
Arrive alors la partie d�cryptage pour v�rifier si j'arrivais � restituer le message, car c'est mieux de savoir d�coder quand m�me
J'appelle donc ma fonction de d�cryptage et utilise la m�me cl� que celle utilis�e pour le cryptage, mais, le message affich� ensuite ne correspond pas � mon texte d'origine.
Voici mes fichiers:
vigenere.h :
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 #ifndef VIGENERE_H #define VIGENERE_H #include <string> #include <iostream> using namespace std; class vigenere { private: public: vigenere(); void vigenere_crypter(const string& input, string& output, const string& cle); void vigenere_decrypter(const string& input, string& output, string& cle); }; #endif // VIGENERE_H
vigenere.cpp :
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
32
33
34
35
36
37
38
39 #include "vigenere.h" vigenere::vigenere() { } void vigenere::vigenere_crypter(const string& input, string& output, const string& cle) { output.resize(input.size(),0); for(size_t i=0,j=0; i!=input.size(); ++i) { if(j==cle.size()) j = 0; output[i] = toupper(input[i]); if((output[i] >= 'A') && (output[i] <='Z')) { output[i] = ((output[i] + cle[j]-2*'A') % 26 + 'A'); ++j; } else { output[i] = input[i]; } } } void vigenere::vigenere_decrypter(const string& input, string& output, string& cle) { string cle_tmp = cle; for(size_t j=0; j!=cle_tmp.size(); ++j) { cle_tmp[j]= 26-(cle_tmp[j] - 'A') + 'A'; } vigenere_crypter(input,output,cle_tmp); }
main.cpp :
Je pense que mon erreur est simple mais je n'arrive pas � la voir...
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 #include <iostream> #include "vigenere.h" using namespace std; int main() { vigenere cryp; string str_crypt; string str_decrypt; string cle = "hello"; cryp.vigenere_crypter("salut ceci est un test",str_crypt,cle); cout << str_crypt << endl; cryp.vigenere_decrypter(str_crypt,str_decrypt,cle); cout << str_decrypt << endl; return 0; }
Si vous pouviez m'�clairer, merci d'avance![]()
Partager