Voici un petit programme en javacript qui peut te rendre service : je m'en sert pour générer des mots de passe de telle sorte qu'ils ne soient pas trop durs à mémoriser (le code est commenté de façon assez claire, je pense...).
- Code: Tout sélectionner
/* Génère une chaine de caractères 'facile à mémoriser' ;) , composée de lettres, chiffres et signes de ponctuation :
- longueur : indique le nombre de caractères (par défaut 8) ;
- majuscules : nombre maximum de majuscules (par défaut 1);
- nb_chiffres : nombre maximum de chiffres (par défaut 1) ;
- nb_ponctuations : nombre maximum de signes de ponctuation (par défaut 0).
*/
function genpw(l, m, c, p) {
/* l : longueur attendue
m : nombre de majuscules
c : nombre de chiffres
p : nombre de ponctuations */
// Types de caractère
var VOYELLE = 0;
var CONSONNE = 1;
// Initialisation des tableaux de référence
var voyelles = new Array('a', 'e', 'i', 'o', 'u', 'y');
var consonnes = new Array('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z');
var chiffres = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
var ponctuations = new Array('<', '>', ',', '?', ';', '.', ':', '/', '!', '%', '$', '&', '(', '-', '_', ')', '=', '+');
// Variable de retour
var result = '';
// Type de caractère actuel (tirage aléatoire)
var type_car = Math.round(Math.random());
// Initialisation des paramêtres si non fournis
if ( isNaN(l) )
l = 8;
if ( isNaN(m) )
m = 1;
if ( isNaN(c) )
c = 1;
if ( isNaN(p) )
p = 0;
// On boucle jusqu'à la longueur attendue
while ( result.length < l ) {
if ( type_car == VOYELLE ) {
/* Tirage aléatoire d'une voyelle.
Si les majuscules sont autorisées, tirage aléatoire de la casse */
if ( (m > 0) && Math.round(Math.random()) ) {
result += voyelles[Math.round((voyelles.length - 1) * Math.random())].toUpperCase();
m--;
} else {
result += voyelles[Math.round((voyelles.length - 1) * Math.random())];
}
// Le prochain caractère sera une consonne
type_car = CONSONNE;
} else {
/* Tirage aléatoire d'une consonne.
Si les majuscules sont autorisées, tirage aléatoire de la casse */
if ( (m > 0) && Math.round(Math.random()) ) {
result += consonnes[Math.round((consonnes.length - 1) * Math.random())].toUpperCase();
m--;
} else {
result += consonnes[Math.round((consonnes.length - 1) * Math.random())];
}
// Le prochain caractère sera une voyelle
type_car = VOYELLE;
}
// Ajout éventuel d'un chiffre aléatoire
if ( (c > 0) && Math.round(Math.random()) && (result.length < l) ) {
result += chiffres[Math.round((chiffres.length - 1) * Math.random())];
c--;
}
// Ajout éventuel d'un signe de ponctuation aléatoire
if ( (p > 0) && Math.round(Math.random()) && (result.length < l) ) {
result += ponctuations[Math.round((ponctuations.length - 1) * Math.random())];
p--;
}
}
return result;
}
// Inclus un formulaire dans la page à l'endroit où le script est appelé
document.write('<form name="pwgen">');
document.write('<label>Longueur : <input name="longueur" type="text" size="2" value="8" /></label> ');
document.write('<label>Majuscules : <input name="majuscules" type="text" size="2" value="1" /></label> ');
document.write('<label>Chiffres : <input name="nb_chiffres" type="text" size="2" value="1" /></label> ');
document.write('<label>Ponctuations : <input name="nb_ponctuations" type="text" size="2" value="0" /></label><br>');
document.write('<input name="pw" type="text" readonly="oui" size="8" />');
document.write('<input type="button" name="gen" Value="Générer un mot de passe" onclick="this.form.pw.value=genpw(longueur.value, majuscules.value, nb_chiffres.value, nb_ponctuations.value);" />');
document.write('<input type="reset">');
document.write('</form>');
Tu peux copier ce code tel quel dans un fichier genpw.js, puis inclure le tag suivant dans le corps d'un document html que ouvriras avec un navigateur :
- Code: Tout sélectionner
<script type="text/javascript" src="genpw.js"></script>
Inutile de spécifier que ce code est librement réutilisable...