Soyez le premier à donner votre avis sur cette source.
Vue 7 765 fois - Téléchargée 596 fois
<?php ///////////////////////////////////////// // Génération de mot de pass // // Fichier: pass_gen.php // // Date de création: 31.12.09 // // Crée par: sdk Narkos // // Ce fichier peut être modifié // ///////////////////////////////////////// // Génération d'un mot de passe function GenPass($nbr_caractere = 6) // Reçoi le nbr de caractère que doit contenir le mdp (sinon 6 par défaut) { if(is_numeric($nbr_caractere)) { // Liste des caractères disponible pour la génération du mdp (cases de 0 à 61) $caracteres = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",0,1,2,3,4,5,6,7,8,9); // Création de l'array qui contiendra le mdp $array_mdp = array(); for($boucle = 1; $boucle <= $nbr_caractere; $boucle++) { // Ajout du caractère aléatoire dans l'array du mdp $array_mdp[] = $caracteres[mt_rand(0,count($caracteres)-1)]; } $mdp = implode("",$array_mdp); // Transfo de l'array en string return $mdp; // Retourne la chaine contenant le mdp } else { return false; // la fonction n'a pas reçu un nombre en paramètre } } ?>
2 janv. 2010 à 09:34
Tu as nommé ta source "GÉNÉRER UN MOT DE PASS ALÉATOIRE", ne l'oublie pas :)
On peut donc considérer qu'une chaîne entre 8 et 15 caractères est satisfaisante. Inutile d'en générer plus.
MD5 retourne 32 car.
Bref, comme dit plus haut tu sors la "grosse artillerie" pour un truc qui se fait en 1 seule ligne, et qui est bien plus optimisé.
Maintenant, si tu souhaites rester sur ce principe, il pourrait être intéressant de le justifier. Par exemple en tentant de générer des mots de passe facile à retenir pour un humain, que tu complexifierais par l'ajout de caractères spéciaux et de ponctuation, par exemple :
trau20,abraz
?aimy1_@rinette
afer,130vint
...
Dans ce cas l'utilisation d'une fonction serait requise, en travaillant sur une alternance de voyelles / consonnes / car spéciaux.
Cordialement,
Kohntark-
2 janv. 2010 à 00:03
Merci pour ta solution et ton explication. C'est vrai que t'as solution à l'air moins lourde.
Par contre par curiosité tu peux avoir maximum combien de caractères pour le mdp? car avec le md5 la taille se limite un peu je pense...
Sinon merci pour la faute dans mon code ;) je vais actualiser la source.
Salutations
1 janv. 2010 à 23:22
J'enfonce le clou sur la simplicité :)
Ta fonction est particulièrement lourde pour générer une simple chaîne aléatoire (boucle, tableaux, ...)
Un truc comme ça est tout de même mieux tu ne penses pas ?
$passLen = 12;
$pass = substr(md5(uniqid(mt_rand(), true)), 0, $passLen);
en plus c'est au moins 6 fois plus rapide (bon, OK, c'est ultra négligeable sur quelques itérations)
En passant, tu as une erreur dans ton code :
mt_rand(0,count($caracteres))
=>
mt_rand(0,count($caracteres)-1)
Cordialement,
Kohntark-
1 janv. 2010 à 21:34
Enfin bon là c'est un peu une question de gout ;) et de façon de faire.
Comme ça les gens auront plus de choix ;)
1 janv. 2010 à 20:38
Bonne année à toi aussi ;)
Je passe en coup de vent...Ton test ne signifie pas grand chose en l'état! Il aurait fallut que tu mettes les autres caractères minuscules et chiffres en supplément. Moi, je n'ai pas mis car sa faisait long à taper, mais il m'a sembler évident qu'il fallait les insérer.
Après, ce que je t'ai dit c'est qu'il y a plus simple pour générer des mdp que des tableaux et un mt_rand() :
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.