Générer un mot de passe aléatoire sécuritaire

Voici une solution simple et élégante pour générer des mots de passe aléatoires et sécuritaires en PHP. La fonction génère un mot de passe avec les caractéristiques suivantes:

  • Caractères en majuscules et en minuscules
  • Un caractère spécial
  • Supression des caractères semblables I (i majuscule), 1 (Un) et l (L en minuscule) (Suggéré par Antoine !)

/**
 * Generate a random secure password.
 *
 * @param integer $nbChar Password length. Default 8.
 *
 * @access public
 * @author Sylvain Lévesque
 * @return string
 */
function generatePass( integer $nbChar = 8 ) {
    if ( empty($nbChar) ) {
        $nbChar = 8;
    }   
 
    $characters = '023456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ#!$';
    $specials = '#!?$%&*';
 
    $firstPart = substr(str_shuffle($characters), 0, $nbChar - 1);
    $lastPart = substr(str_shuffle($specials), 0, 1);
 
    return str_shuffle($firstPart . $lastPart);
}

Donnez moi votre avis ?

N.B. Vous êtes libre d’utiliser ce bout de code comme bon vous semble.