Générer un mot de passe en PHP

Edit: une mise à jour est disponible ici
J’ai récemment eu besoin de générer un mot de passe grâce à PHP. Le problème est que le seul moyen de générer quelque chose en PHP est d’utiliser la fonction mt_rand (rand étant moins efficace). Cela entraîne un second problème: les mots de passe qui utilisent seulement des chiffres sont crackables en quelques secondes. Il faut donc utiliser un tableau à doubles entrées (valeur1 => valeur2) qui convertira les chiffres en caractères différents. Je ne ferais pas de tutoriel pour quelque chose d’aussi simple mais j’ai commenté le code source:

<?php
	function aleacode($a,$b){
		$convertion = array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f','7'=>'g','8'=>'h','9'=>'i','10'=>'j','11'=>'k','12'=>'l','13'=>'m','14'=>'n','15'=>'o','16'=>'p','17'=>'q','18'=>'r','19'=>'s','20'=>'t','21'=>'u','22'=>'v','23'=>'w','24'=>'x','25'=>'y','26'=>'z','27'=>'A','28'=>'B','29'=>'C','30'=>'D','31'=>'E','32'=>'F','33'=>'G','34'=>'H','35'=>'I','36'=>'J','37'=>'K','38'=>'L','39'=>'M','40'=>'N','41'=>'O','42'=>'P','43'=>'Q','44'=>'R','45'=>'S','46'=>'T','47'=>'U','48'=>'V','49'=>'W','50'=>'X','51'=>'Y','52'=>'Z','53'=>'0','54'=>'1','55'=>'2','56'=>'3','57'=>'4','58'=>'5','59'=>'6','60'=>'7','61'=>'8','62'=>'9','63'=> '#','64'=>'@','65'=>'&','66'=>'!','67'=>'?','68'=>'+','69'=>'[','70'=>'(','71'=>')','72'=>']','73'=>'{','74'=>'}'); // Tableau de conversion
		$nb = mt_rand($a+1,$b+1); // On génère un nombre entre $a et $b
		for($i=1;$i<$nb;$i++){ echo $convertion[mt_rand(1,74)]; } // On le répète $nb fois
	}
	aleacode(5,5); // Génère un mot de passe de 5 caractères. Si vous en voulez un entre 3 et 5 caractère, utilisez ceci: aleacode(3,5);
?>

C’est tout. Il vous suffit d’utiliser la fonction aleacode pour générer un code.