Générer un mot de passe facilement mémorisable

Développée dans le but de pouvoir générer des mots de passe facilement mémorisables, la fonction generatePassword() se base sur la notion de "pattern" pour retourner un mot de passe "formatté".

Description

string generatePassword ( [string $pattern [, bool $caseless]] )

La fonction generatePassword() est basée sur l'utilisation d'un pattern, c'est à dire une chaîne de caractères qui indique à la fonction quel suite de caractères vous souhaitez voir apparaître dans le résultat final.

Trois types de caractères sont disponibles :

  • c : consonne
  • v : voyelle
  • n : chiffre

Le pattern par défaut est cvcvnnn ce qui peut vous retourner un résultat comme fibo594.

La fonction generatePassword() peut prendre deux paramètres facultatifs en entrée : le fameux pattern que vous pouvez moduler à souhait, et la sensibilité à la casse c'est à dire que la fonction vous retourne un mot de passe en minuscules exclusivement (comportement par défaut) ou un mélange de majuscules et minuscules.

Exemples

$password = generatePassword(); // retourne vupa651
$password = generatePassword('ccnnvv') ; // retourne fpao27
$password = generatePassword(null, false); // retourne FiDU439
$password = generatePassword('cvcvcvcv', false); // retourne pIKAlamY

Code source

function generatePassword( $pattern = null, $caseless = true ) {

	if ( empty($pattern) ) $pattern = 'cvcvnnn';
	$characters	= array(
		'c'	=> true === $caseless
				? 'bcdfghjklmnpqrstvwxz'
				: 'bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ',
		'v'	=> true === $caseless ? 'aeiouy' : 'aeiouyAEIOUY',
		'n'	=> '0123456789'
	);
	
	$password 	= '';
	for ( $i = 0, $length = strlen($pattern); $i < $length; $i++ ) {
		$password .= substr(
			$characters[substr($pattern, $i, 1)], 
			rand(0, strlen($characters[substr($pattern, $i, 1)]) - 1), 
			1
		);
	} // endif
	
	return $password;

} // end of 'generatePassword()'

Comme toujours, n'hésitez pas à me faire part de vos remarques et suggestions quant à l'utilisation et l'amélioration de cette fonction.

Posté le Friday 05 October 2007 dans .

Commentaires

Ajouter un commentaire

Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.