Non, je n’ai pas passé ma matinée à rien faire.
Je me suis mis au défi de pondre un programme en PHP qui serve vraiment à quelque chose (oui parce qu’un programme qui sert à faire des additions, c’est facile à faire mais ça sert absolument à rien, ou si peu…). Ce pour me prouver que je savais coder une application en PHP.
Alors voilà, c’est fait, je suis tout fier de moi.
Le générateur se trouve à cette adresse là (je l’ai supprimé, par mesure de sécurité. Le code est disponible en dessous) et il est sous licence GPL. Et vous pouvez vérifier la source et même la critiquer.
A noter : comme je l’ai dit juste au dessus, le code est libre, donc vous pourrez vérifier que le mécanisme de génération du mot de passe n’est absolument pas issu d’une quelconque liste, mais que chaque caractère est choisi aléatoirement. Je dis cela notamment pour aux lecteurs qui auraient des doutes (légitimes) là-dessus. A priori, vous pouvez donc compter dessus. Mais je ne suis certainement pas sans faille, et donc le code que j’ai pondu non plus.
Edit : Voilà le code de ce petit script.
<?php /* Pondu par Louis VOLANT le Mardi 30 Juillet 2008 Licence GPL */ function passwdgenerator ($nb,$valeurs,$nbvaleurs) { //Pour la fonction, nb doit être un entier supérieur à 1. C'est le cas ici. $resultat; for($i=0;$i<$nb;$i++) { $val=$valeurs[rand(0,$nbvaleurs-1)]; $resultat=$resultat.$val; } return $resultat; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Generateur de mots de passes</title> </head> <body> <?php if ($_POST['minuscules']==on||$_POST['majuscules']==on||$_POST['chiffres']==on||$_POST['caracteresspeciaux']==on&&isset($_POST['longueur'])) { $minuscules=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"); $majuscules=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"); $chiffres=array(0,1,2,3,4,5,6,7,8,9); //Pas forcément utile, je le reconnait, mais c'est plus clair. $caracteresspeciaux=array(">","<",",",";",".","/",":","&","|",")","(","~","#","{","}","[","]","-","=","$","*","!","?"); $longueur=$_POST['longueur']; $touslescaracteres=array(); if($_POST['minuscules']==on) { $touslescaracteres=$touslescaracteres + $minuscules;} if($_POST['majuscules']==on) { $touslescaracteres=array_merge($touslescaracteres,$majuscules);} if($_POST['chiffres']==on) { $touslescaracteres=array_merge($touslescaracteres,$chiffres);} if($_POST['caracteresspeciaux']==on) { $touslescaracteres=array_merge($touslescaracteres,$caracteresspeciaux);} $nbcaracteres=count($touslescaracteres); $motdepasse=passwdgenerator($longueur,$touslescaracteres,$nbcaracteres); } ?> <div style="text-align: center;"><big><big>Générateur de mots de passe</big></big><br><br> <div align="center"> <br /> <br /> <div style="text-align: center;"><b> <?php if(isset($_POST['longueur'])) { echo 'Le mot de passe généré est : '.$motdepasse; } ?></b></big> <br /> <br /> <form method="post" action="passwordgenerator.php"> <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="text-align: right; width: 50%; vertical-align: top;">Quels types de caractères voulez-vous intégrer à votre mot de passe :</td> <td style="text-align: left; width: 50%;"> <input type="checkbox" name="minuscules" id="minuscules" checked="checked" /> <label for="minuscules">Lettres minuscules</label><br /> <input type="checkbox" name="majuscules" id="majuscules" checked="checked" /> <label for="majuscules">Lettres majuscules</label><br /> <input type="checkbox" name="chiffres" id="chiffres" checked="checked" /> <label for="chiffres">Chiffres</label><br /> <input type="checkbox" name="caracteresspeciaux" id="caracteresspeciaux" checked="checked" /> <label for="caracteresspeciaux">Caractères speciaux</label></td> </tr> <tr> <td style="text-align: right; width: 50%;"><label for="longueur">Combien de caractères aura le mot de passe ?</label></td> <td style="text-align: left; width: 50%;"><select name="longueur" id="longueur"> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10" selected="selected">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> </select></td> </tr> <tr> <td style="text-align: right; width: 50%;"></td> <td style="text-align: left; width: 50%;"><input type="submit" value="Générer !" /></td> </tr> </tbody> </table> </form> <br /> <br/> <em>Pour information : il y a exactement 83 caractères disponibles si vous sélectionnez toutes les options.<br> Si vous choississez de mettre n caractères dans votre mot de passe, il y aura alors 83^n possibilités de mots de passe.<br> Par exemple pour n = 10, cela fait en tout... 15516041187205853449 possibilités. </em> </div> </body> </html>
J’ai essayé de télécharger le source mais ça ne fonctionne pas.
C’est pas grave, juste un petit détail, y a t il dans le mot de passe généré au moins un caractère pour chaque type sélectionné ?
Heu… pour moi, ça marche ! Attention : ce n’est pas un logiciel qui est à télécharger. C’est une page PHP (qui s’appelle passwordgenerator.php).
Le ‘logiciel’ ne fonctionne que sur un serveur qui gère le PHP.
Par contre, pour ta question : non. En fait, ce qui se passe : en fonction des caractères que tu choisis d’intégrer à ton mot de passe, le logiciel créée un ‘sac’ avec tous les caractères dedans. puis, il tire dans ce sac autant de fois que tu lui as demandé de caractères (sauf que tu peux retrouver plusieurs fois le même caractère dans ton mot de passe).
Je confirme je vois le code source sous linux mais sous windows j’ai pas eu le code.
Oui mais alors en demandant un password complexe, on peut se retrouver avec un password simple.
Du coup il faut faire plusieurs tirages 🙂
Je chipote, je chipote …
Merci pour le code. Il est vrai que je n’y touche plus.
De rien Snash 😀 spa grave !
Oui, en fait les fichiers textes écrits sous Linux sont quasiment illisibles sous Windows (c’est le cas ici), et l’inverse est vraie aussi.
Cela est dû, je crois, à la gestion des retours à la ligne qui est différente : Linux et Windows ne les codent pas pareil.
Pour en savoir plus :
là : http://www.generation-nt.com/reponses/retour-a-la-ligne-windows-linux-entraide-227617.html
et là : http://fr.wikipedia.org/wiki/CRLF