Il arrive souvent qu’un développeur PHP ait besoin d’intégrer à son code une fonction de génération aléatoire de mots de passe ou de clés diverses.
Je vous propose ici une fonction que j’utilise régulièrement et qui vous permettra de générer ces chaînes en choisissant leur longueur minimum, leur longueur maximum et leur type de contenu.
Je m’étais inspiré d’une fonction trouvée si je me souviens bien dans des commentaires de php.net.
-
/**
-
* Génération d'une clef ou d'un mot de passe
-
*
-
* @param int $minLen Longueur minimum de la chaine retournée
-
* @param int $maxLen Longueur maximum de la chaine retournée
-
* @param string $type Type de chaine retournée (lower/upper/numeric/alpha/alnum)
-
*
-
* @return string Chaine générée au hasard en fonction des critères
-
*
-
* Inspiré d'un exemple trouvé sur php.net
-
*/
-
function generateKey($minLen=12, $maxLen=32, $type='alnum') {
-
// Caractères alphabétiques minuscules
-
$loAlpha = 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');
-
-
// Caractères alphabétiques majuscules
-
$upAlpha = 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');
-
-
// Caractères numériques
-
$num = array('1','2','3','4','5','6','7','8','9','0');
-
-
$keyVals = array();
-
$key = array();
-
-
// Sélection des tableaux à utiliser
-
switch ($type) {
-
case 'lower' :
-
$keyVals = $loAlpha;
-
break;
-
case 'upper' :
-
$keyVals = $upAlpha;
-
break;
-
case 'numeric' :
-
$keyVals = $num;
-
break;
-
case 'alpha' :
-
$keyVals = array_merge($loAlpha, $upAlpha);
-
break;
-
case 'alnum' :
-
$keyVals = array_merge($loAlpha, $upAlpha, $num);
-
break;
-
}
-
-
// Longueur pour cette chaine
-
$len = rand($minLen, $maxLen);
-
// Boucle en fonction de la longueur de la chaine
-
for($i = 0; $i <= $len-1; $i++) {
-
$r = rand(0,count($keyVals)-1);
-
$key[$i] = $keyVals[$r];
-
}
-
-
// Assemblage des éléments dans une string
-
return join("", $key);
-
}
Vous pouvez très bien faire évoluer cette fonction en lui ajoutant tous les éléments dont vous avez besoin. Vous pouvez par exemple lui rajouter un tableau de symboles (@#!, etc) ou supprimer certains caractères. Par exemple, certains ont l’habitude de supprimer les 0 (zéros) et les O (lettre 0) afin d’éviter toute confusion entre eux.
A vous d’être créatifs ;)
Inscrivez-vous au RSS des commentaires ou laissez un trackback
Génération d’une clé ou d’un mot de passe



















Donnez votre avis
Veuillez laisser votre commentaire ci-dessous