begin process at 2012 05 27 21:36:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > GÉNÉRER UN MOT DE PASS ALÉATOIRE

GÉNÉRER UN MOT DE PASS ALÉATOIRE


 Information sur la source

Note :
Aucune note
Catégorie :Chaîne de caratère Classé sous :fonction, générer, password, aléatoire Niveau :Débutant Date de création :31/12/2009 Date de mise à jour :02/01/2010 00:05:30 Vu / téléchargé :4 765 / 275

Auteur : narkos2

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Voilà c'est le 1er script que je pose sur ce site. Il est très simple je sais, mais faut bien commencer gentillement.

Ce script permet donc de générer un mot de passe en PHP.
Les caractères utilisés sont de 0 à 9 et de a à Z. Ils sont stocké dans un array dans la fonction de génération.

Vous pouvez indiquer le nombre de caractères souhaités pour le mdp lors de l'appel à la fonction, sinon par défaut le nombre est 6 caractères. (la taille est illimitée, ou presque ;))

Une boucle "for" est utilisée avec un mt_rand() qui va chercher dans l'array de caractères.

Ensuite l'array est transformé en string avec "implode()" puis le résultat est retourné.

Voilà pour un début ;)

Source

  • <?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
  • }
  • }
  • ?>
<?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
	}
}
?>

 Conclusion

Je suis ouvert à toutes remarques pouvant améliorer ce code. (même un joyeux noel tant que ça m'aide ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 décembre 2009 12:17:54 :
J'avais pas bien compris le fonctionnement du champ "source" lors du post du script.
31 décembre 2009 12:20:31 :
Erreur de frappe dans le code. DSL c'est la fatigue ;)
01 janvier 2010 16:28:20 :
Ajout d'une vérification sur le paramètre envoyé à la fonction ( is_numeric() ). J'ai enlevé toutes les clé du tableau des caractères qui ne servaient à rien (car créé automatiquement). J'ai remplacé le nombre 61 (nombre de caractères du tableau de qui était le paramètre max pour le mt_rand() par un count() pour ne pas avoir à le modifier si on rajoute des caractères supplémentaires.
01 janvier 2010 16:36:51 :
Depuis le mac un __MACOSX/._index.php c'était inclu dans le zip. Donc réupload depuis xp ;)
02 janvier 2010 00:05:30 :
Correction du code car une erreur a été reportée par:Kohntark-

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

CLEF POUR EAN 13 ET 14 par RaftY
PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien
Source avec Zip GÉNÉRATEUR DE MOT PASSE AVEC / SANS AJAX - AVEC / SANS JAVAS... par Vyk12
Source avec Zip FONCTION QUI GÉNÉRE UN MOT DE PASSE ALÉATOIRE par italiasky
TABLEAU DE NOMBRES ENTIERS ALÉATOIRES, TOUS DIFFÉRENTS OU NO... par BreakingCentral

Commentaires et avis

Commentaire de phpAnonyme le 31/12/2009 15:45:32

Salut,

Il y a plus simple:

$generate = $str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
$mdp = substr($generate,0,5);

;)

Commentaire de phpAnonyme le 31/12/2009 15:49:09

Ou encore avec une boucle si tu préfère

$caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($i=0; $i<strlen($caracteres); $i++)
{
$generate = $str_shuffle($caracteres);
}
$mdp = substr($generate,0,5);

Commentaire de phpAnonyme le 31/12/2009 16:07:33

Dans le strlen() c'est $nbr_caractere et non $caractères

Commentaire de narkos2 le 01/01/2010 16:01:05

Salut,

Déjà merci pour tes commentaires ;)
Ensuite bonne année!

Pour le code que tu proposes dans tes messages, j'ai testé le code en demandant un mot de pass de 15 caractères puis un de 30 pour pousser un peu le test ;)
Le résultat avec une demande de mdp de 15 caractères:
mon script: P5ArXfXqOSyuVuH
ta solution: EBPIRSLUFCDVNOG
Le résultat avec une demande de mdp de 30 caractères:
mon script: vld3vHZqwEuKW75lxYmfsO8iFPppvX
ta solution: VYSGMPHNWKCURJDXIOAEFZQBLT (retourne seulement 26 caractères, mais on rajoute 0-9 et ça passe ;) )

Voilà mon script s'en sort bien ;)
Mais merci pour ta solution.

Par contre je vais remodifier mon array de caractères, car j'avais mis à chaque fois la clé puis la valeur, pour utiliser le chiffre de la dernière valeur de l'array comme 2ème paramètre de mt_rand(), mais je vais donc enlever les clé pour racourcir le code car elle seront créé automatiquement, et je vais remplacerais le 61 "en dur" par un count sur l'array, comme ça si on veut rajouter des type de caractère pour générer le mot de passe il y aura pas besoin de retoucher le mt_rand()...

Ensuite je vais rajouter une vérif sur la valeur envoyée à la fonction, car si on fait PassGen("lol"); ben ça sot pas quelque chose de bon ;)



Commentaire de phpAnonyme le 01/01/2010 20:38:26

Salut,

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() :

Commentaire de narkos2 le 01/01/2010 21:34:15

Ouai j'ai compris qu'il y a plus simple, et bien sure qu'en ajoutant les caractères en plus de 0 à 9 et les minuscules le test sera plus juste, mais ça ne change rien au fait que ta soluce ne donne pas la possibilité d'avoir des caractères répétés plusieurs fois dans le mdp final, à moins de les écrire plusieurs fois dans ta chaîne...

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 ;)

Commentaire de kohntark le 01/01/2010 23:22:58

Salut,

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-

Commentaire de narkos2 le 02/01/2010 00:03:04

Salut Kohntark-,

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

Commentaire de kohntark le 02/01/2010 09:34:12

Re,

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-

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

générer un nombre aléatoire entre 1 et 16 [ par aze555666 ] bonjour. quelle est la fonction php pour g&#233;n&#233;rer un nombre entier al&#233;atoire entre 1 et 16??? le but est ensuite de r&#233;cup&#233;rer Générer un nombre aléatoire [ par Mikonyx ] slt,pour générer un nombre aléatoire, j'utilise la commande:srand(time());$url=rand(1,$x);echo $url; $x ayant été déjà défini avant...Ca fonctionne, m Fonction inverse à password() ??? [ par Eric25 ] Bonjour,Je voudrais savoir s'il existe une fonction inverse &#224; la fonction password. J'ai stock&#233; des mots de passe dans ma base en les crypta sauvegarde de fichier et appel de fonction [ par zarbiman ] Salut à tous, je dois générer un fichier (word et/ou excel), et j'ai deux problemes:1) j'aimerais pouvoir afficher une fenetre pour permettre à l'util fonction aléatoire parrametrable [ par mdog ] bonjour, dans le but de créer une sorte de jeux de hazard pour faire gagner des codes allopass sur mon site, j'ai besoin d'une fonction en php qui ren Fonction Header PHP [ par DCO2 ] Bonjour,J'aimerai savoir comment param&#233;trer une fonction header.Voici le d&#233;bur de la page:[code]&lt;?phpsession_start();if (@$userid &amp;&a générer un pdf à partir de code HTML [ par putch ] Voila mon souci, je suis en train de faire une fonction qui g&#233;n&#233;re un fichier pdf &#224; partir de code HTML pass&#233; en param&#232;tre : fonction Autoload.... [ par Yemanjah ] Bonjour , &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apr&#232;s de multiples essais , je d&#233;sesp&#232;re et viens demander de l'aide ici.J'essaye de met Résultat d'une requete choisir en fonction du nom [ par tibine974 ] Bonsoir &#224; tous !!Voil&#224; je me pose une petite question : existe-t-il une fonction mysql ou php qui permet de faire cela :On prend une requete Pb avec fonction mail() [ par victorvivic ] Bonjour,J'ai cr&#233;&#233; un formulaire d'envoi de cartes de voeux avec un cadre de saisie de texte et une image &#224; choisir. Le destinataire re&


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales