bonjour
j'ai crée un algorithme de chiffrement qui prend un mot en paramètres et mélange les lettres de façon aléatoire puis renvoie le mot chiffrée
mais le problème c'est que ça prend 15 secondes !!!
voila le code source, si quelqu'un a des idées pour l'optimiser, je suis preneur :
et merci pour votre aide.
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
40
41
42
43
44
45
46
47
48
49
50
51 #include <string> #include <ctime> #include <cstdlib> #include "MelangeMot.h" using namespace std; string melange_mot(string mot) { string chaine(mot); int i(0), nombreAleatoire(0); int const MAX(mot.size()); bool v; while(!v)// si il reste des caractéres non chiffrées { v = cherche_caractere(mot, '*'); // si toutes les cases de mot[] contiennent '*' // generation du nombre aleatoire srand(time(0)); nombreAleatoire = rand() % MAX; // recuperation d'un caractere au hasard if(mot[nombreAleatoire] != '*') // pour eviter de chiffrer le meme caractere 2 fois { chaine[i] = mot[nombreAleatoire]; // on recupére le caractére dans chaine[] mot[nombreAleatoire] = '*'; //et on le remplace par '*', la prochaine fois il ne seras pas chiffré ++i; } } // renvoie du mot chiffré return chaine; } bool cherche_caractere(std::string mot, char c) { int i(0); bool valeure(true); while(mot[i] != '\0' && valeure) { if(mot[i] != c)// si un caractere est differant de c { valeure = false; } ++i; } return valeure; // on revoi la valeur de verité }
Partager