Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5013 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Génération de mots

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génération de mots

n°2023096
oliparcol
Murphy's Law Master
Posté le 15-09-2010 à 15:49:08  profilanswer
 

Bonjour,
 
Je dois générer tous les mots de la forme XXXXX où X est un caractère ascii compris entre 33 et 126. La solution la plus simple est de faire 5 for imbriqués (oh yeah) et de mettre le tout dans un vecteur (je m'en fou un peu de la mémoire utilisée par mon programme). Bon par contre, cinq for imbriqués c'est pas tip top.  
 
Donc la deuxième solution à laquelle j'ai pensée c'est de faire une méthode du type
 
string generationMotDePasse.generer(string ancien_mot_de_passe)
 
où le mot de passe renvoyé est le suivant après ancien_mot_de_passe. Donc l'avantage c'est que c'est plus élégant mais par contre, on perd en vitesse car on a un appel de fonction (je dois créer un programme qui permet de casser un code AES en bruteforce).
 
Quelqu'un a-t-il d'autres idées ?
 
merci,
 
oliparcol

mood
Publicité
Posté le 15-09-2010 à 15:49:08  profilanswer
 

n°2023102
h3bus
Troll Inside
Posté le 15-09-2010 à 16:11:38  profilanswer
 

Je ne saisis pas très bien pourquoi tu ne veux pas faire 5 boucles for imbriquées? Problème de lisibilité? Au pire tu peux le simuler avec une boucle while, et en le codant correctement, rendre tout ça très lisible...
 
Sinon je pense que la méthode utilisant une génération de mot de passe est une mauvaise idée car:
- Tu n'es pas sur de parcourir toutes les possibilités
- Je ne sais pas comment elle marche mais elle risque d'être beaucoup plus lente que les 5 for.
 
Je n'ai pas vraiment d'autre idées sinon...


---------------
sheep++
n°2023104
oliparcol
Murphy's Law Master
Posté le 15-09-2010 à 16:22:37  profilanswer
 

h3bus a écrit :

Je ne saisis pas très bien pourquoi tu ne veux pas faire 5 boucles for imbriquées? Problème de lisibilité? Au pire tu peux le simuler avec une boucle while, et en le codant correctement, rendre tout ça très lisible...


 
parce que dès que je dépasse 3 boucles, je pense qu'il y a un problème dans l'implémentation
 

h3bus a écrit :


Sinon je pense que la méthode utilisant une génération de mot de passe est une mauvaise idée car:
- Tu n'es pas sur de parcourir toutes les possibilités
- Je ne sais pas comment elle marche mais elle risque d'être beaucoup plus lente que les 5 for.


 
pour la méthode, je pensais l'appeler de la classe qui tente chaque clé sur l'algo AES. je suis sûr de tester toutes les clés mais effectivement, ça va probablement être plus lent

n°2023106
h3bus
Troll Inside
Posté le 15-09-2010 à 16:25:43  profilanswer
 

oliparcol a écrit :


parce que dès que je dépasse 3 boucles, je pense qu'il y a un problème dans l'implémentation


 
Et le while, en implémentant une sorte de propagation de retenue sur ta chaine de caractère et en ajoutant 1 au premier caractère?


---------------
sheep++
n°2023113
oliparcol
Murphy's Law Master
Posté le 15-09-2010 à 16:39:23  profilanswer
 

ouai je vais surement faire un truc de ce genre...
 
le problème c'est que niveau modularité, c'est pas tip top, je vais voir si ya pas moyen de coder en dur le nombre de caractères du mot de passe...

n°2023115
h3bus
Troll Inside
Posté le 15-09-2010 à 16:55:55  profilanswer
 

Juste pour compléter ma pensée, voilà à quoi je pensais:

Code :
  1. #define cMIN_CHAR_VALUE 33
  2. #define cMAX_CHAR_VALUE 126
  3. void generateNext(char* currentWord, unsigned int size)
  4. {
  5.     unsigned int    index;
  6.    
  7.     currentWord[0]++;
  8.    
  9.     for(index = 0; index < size  - 1; index++)
  10.     {
  11.         if(currentWord[index] > cMAX_CHAR_VALUE)
  12.         {
  13.             currentWord[index] = cMIN_CHAR_VALUE;
  14.             currentWord[index+1]++;
  15.         }
  16.         else
  17.         {
  18.             break;
  19.         }
  20.     }
  21. }


 
Tu dois pouvoir rendre un truc comme ça aussi modulaire que la génération basée sur AES...


---------------
sheep++
n°2023179
Taz
bisounours-codeur
Posté le 15-09-2010 à 23:23:57  profilanswer
 

Si ta fonction est inline, ça te pose aucun problème en terme de performance.
 
Le code d'h3bus compte en little-endian mais au delà des char*, c'est correct (à toi de voir si tes bornes sont < ou <=).

n°2023180
Taz
bisounours-codeur
Posté le 15-09-2010 à 23:26:46  profilanswer
 

Et si tu veux t'amuser parce que ton mot de passe a un longueur statique  tu déroules la boucle en template et/ou tes bornes sont statiques et tu mets ça en param template.

n°2023932
oliparcol
Murphy's Law Master
Posté le 20-09-2010 à 17:07:22  profilanswer
 

merci pour l'aide, ça a bien fonctionné


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Génération de mots

 

Sujets relatifs
comparaison de mots clésgeneration de JPG avec Java3d de façon transparente
mots clés & visual cppGeneration d'un GIF en ASP.NET
Récupérer les mots séparés par des espaces dans une chaîne de char....[Symfony 1.4] database.yml et generation du schema.yml : pgsql
Aide pour transformer des mots en liens[php] Problème d'include et génération d'image (résolu)
Créer un programme de génération de fichiers sonGénération de mots similaires
Plus de sujets relatifs à : Génération de mots


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)