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