Nous sommes le Mer 23 Juil, 2025 13:55
Supprimer les cookies

pour generer une chaine de mots...

Pour une tâche précise, pour remplacer un logiciel propriétaire donné...

Ven 13 Oct, 2006 20:15

Bonsoir,
Voici mon probleme, avant de partir en vacances, j'ai cryté mon disque dur, et là je l'ai oublié :(
Bon, je connais les mots que j'utilise, mais j'en combine 2 ou 3 (des fois 4, le parano!!!), en en mettant un en majuscules, l'autre pas..., le petit bordel quoi.
j'ai trouvé su ce forum (http://forum.framasoft.org/viewtopic.php?t=407&sid=dfc41726c20e90bb9a8bac5c8c143c8e) un ptit truc sympa en java, mais vu mes compétences tres limitées, je n'ai réussi que à générer un "string " à la foi , et vu le nombre de mots que j'aurai pu utiliser, il doit avoir environ 80 000 strings en 4 mots et 6000 en 3.

Voici le code modifié:

// Génère une chaine de mots .


function genpw(n, g) {

/* n : nombre de mots à utiliser dans un mot à générer
g : nombre de mots à générer */


// Initialisation des tableaux de référence
var mots = new Array('zoé', 'ZO2', 'chien' ,'CHIEN', 'café', 'CAF2', 'Bor***');
// Variable de retour
var result = '';
// Initialisation des paramêtres si non fournis
if ( isNaN(n) )
n = 4;
if ( isNaN(g) )
g = 10;
// On boucle jusqu'à la longueur attendue
while ( result.length < n ) {
result += mots[Math.round((mots.length - 1) * Math.random())];
}
return result;
}

// Inclus un formulaire dans la page à l'endroit où le script est appelé
document.write('<form name="pwgen">');
document.write('<label>Nb de mots à utiliser&nbsp;:&nbsp;<input name="longueur" type="text" size="2" value="4" /></label>&nbsp;');
document.write('<label>Nb de mots à générer&nbsp;:&nbsp;<input name="nb_mots" type="text" size="2" value="1" /></label>');
document.write('<input type="button" name="gen" Value="Générer" onclick="this.form.pwa.value=genpw(longueur.value, nb_mots.value);" /><br>');
document.write('<input name="pwa" type="text" readonly="oui" size="30" /><br> ');
document.write('</form>');



Mes problemes :
- ça me compte le nb de lettres et pas de mots
- je ne peux generer qu'un string à la fois
- serait il possible de generer un .txt ou un affichage à l'écran en évitant de génerer 2 fois le meme string

Merci, chui désepéré, ma femme me fait la gueule, j'ai aussi cryté le photos du mariage :|
jezen13

Messages : 5

Ven 13 Oct, 2006 22:41

Salut,

Si j'ai bien compris. Tu as plusieurs mots que tu accoles l'un aux autres pour former un mot de passe.
Donc, tu peux aussi bien avoir "CAF2CHIEN" que "CAF2CHIENCAF2" que "CAFéCHiencafézoé".

J'ai un peu reviewé ton code javascript. Tu utilisais result.length qui te donne la longueur du string dans result et non pas le nombre de mot que t'y a mis. Tu n'utilisais pas g qui te permet de contrôler le nombre de mot de passe à générer. Ensuite si tu voulais visualiser plusieurs mot de passe à la fois, tu dois utiliser un champ plus étendu qu'un INPUT de type text. Je l'ai remplacé par un TEXTAREA pour faire simple et rapide.

Voici le code modifié:

Code: Tout sélectionner
// Génère une chaine de mots .
function genpw(n, g) {
   
   /* n : nombre de mots à utiliser dans un mot à générer
   g : nombre de mots à générer */
   
   
   // Initialisation des tableaux de référence
   var mots = new Array('zoé', 'ZO2', 'chien' ,'CHIEN', 'café', 'CAF2', 'Bor***');
   // Variable de retour
   var result = '';
   // vecteur des mot de passes finaux (jusque g mots de passe)
   var resultArray = new Array;
   
   // Initialisation des paramêtres si non fournis
   if ( isNaN(n) )
      n = 4;
   if ( isNaN(g) )
      g = 10;
   
   // on boucle jusqu'à atteindre le nombre de mots de passe désiré
   for ( var x = 0; x < g; x++ ) {
      result = '';   
      // on boucle jusqu'à atteindre le nombre combinaison de mots possible
      for( var i = 0; i < n; i++ ) {
         result += mots[Math.round((mots.length - 1) * Math.random())];
      }
      // collecter les mots de passe dans un vecteur
      // séparés par un caractère de saut de ligne pour plus de clarté
      resultArray.push( result + "\n" );
   }
   // retourner le vecteur en entier en vue de remplir le TEXTAREA
   return resultArray;
}

// Inclus un formulaire dans la page à l'endroit où le script est appelé
document.write('<form name="pwgen">');
document.write('<label>Nb de mots à utiliser&nbsp;:&nbsp;<input name="longueur" type="text" size="2" value="4" /></label>&nbsp;');
document.write('<label>Nb de mots à générer&nbsp;:&nbsp;<input name="nb_mots" type="text" size="2" value="1" /></label>');
document.write('<input type="button" name="gen" Value="Générer" onclick="form.pwa.value = genpw(longueur.value, nb_mots.value);" /><br>');
document.write('<textarea name="pwa" readonly="yes" rows="100" cols="20"/></textarea><br> ');
document.write('</form>');


J'ai juste un point non réalisé. C'est l'utilisation de random. Ca fourni un nombre aléatoire qui te permet de prendre un élément du vecteur "mots". Il n'est pas improbable qu'il te ressorte deux fois la même combinaison. Enfin, tu auras déjà du choix.

Du moins, j'ai vérifié et ça fait ce que j'ai compris du problème.

J'espère que ça correspond à ce que tu demandais.
Amicalement,

Laurent
obor2

Messages : 524
Géo : belgique

Sam 14 Oct, 2006 09:39

MAGNIFIQUE! :P

En fait jeme suis mis au JAVA il y à 3 jours, du fait que je ne trouvais pas de programmes pour mon problemme,
je vais esseyer de comprendre pourquoi les mots sont précédés d'une virgule ",chienchien" lorqu'il y a un retours à la ligne .

Merci, je vous tiens au courant 8)
jezen13

Messages : 5

Sam 14 Oct, 2006 10:00

J'avais bien compris que ça ne faisait pas longtemps que tu utilisais le JavaScript.
Et ce que tu avais écrit mérite bien des bravos.

Pour ce qui concerne la virgule.
Je pense que c'est comme ça parce que la valeur retournée est en fait resultArray.toString().
Et que cette fonction transforme le vecteur en un string.
C'est à dire en prenant chaque éléments du tableau et en les séparant par une virgule.
En gros ça transforme le tableau en un chaîne de caractère tel que "chienchien\n,chienbor***\n"
Le '\n' étant rajouté au moment du push.

Pour résoudre le problème, tu peux utiliser

Code: Tout sélectionner
resultArray.push( result );

Code: Tout sélectionner
return resultArray.join('\n');


à la place de respectivement

Code: Tout sélectionner
resultArray.push( result + "\n" );

Code: Tout sélectionner
return resultArray;


Ca retournera une liste de valeur séparées par un caractère de saut de ligne ('\n') uniquement.
Amicalement,

Laurent
obor2

Messages : 524
Géo : belgique

Sam 14 Oct, 2006 11:05

Cool,
en fait c'est un code que j'ai "pompé" sur le forum et que j'ai mis à ma sauce 8)
Bon, j'en ai géré 80000 à 4 mots, on vas voir ce que ça donne...
en fait j'ai archivé mon DD en RAR3.0, ce qui fait que je ne pas passer plus de mots/s :?

allez cherche petit PC, cherche :D

(pour le tri des mots et des doublons, Texpad est là 8) )
jezen13

Messages : 5

Sam 14 Oct, 2006 14:04

:D :D :D :D :D :D :D :D

C'est bon j'ai, un grand MERCI.


:D :D :D :D :D :D :D :D
jezen13

Messages : 5

Sam 14 Oct, 2006 14:57

jezen13 a écrit:En fait jeme suis mis au JAVA il y à 3 jours,

obor2 a écrit:J'avais bien compris que ça ne faisait pas longtemps que tu utilisais le JavaScript.


Java ou Javascript? ça n'a rien à voir...
Quand tout le reste a échoué, lisez le mode d'emploi.
yostral

Avatar de l’utilisateur
Messages : 5403
Géo : Là-haut dans la montagne...

Sam 14 Oct, 2006 20:26

Heuuuu, je sais pas, le code qui est écrit au dessus :?:
jezen13

Messages : 5

Sam 14 Oct, 2006 22:17

Javascript alors...
Quand tout le reste a échoué, lisez le mode d'emploi.
yostral

Avatar de l’utilisateur
Messages : 5403
Géo : Là-haut dans la montagne...

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit