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 :

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é
}
et merci pour votre aide.