Pour obtenir des chaînes de caractères aléatoires c'est assez simple : il suffit de concaténer des caractères. Reste à voir quels caractères on s'autorise à utiliser.
Dans certains projets je stocke un identifiant numérique sous forme de texte lié à chaque enregistrement qui me sert ensuite de clé privée pour de la signature d'opérations. Pour ça j'utilise simplement cette fonction :
function GenererIdentifiantNum($taille=10)
{
$id = "";
for ($j = 0; $j < $taille/5; $j++)
{
$num = mt_rand (0,99999);
for ($i = 0; $i < 5; $i++)
{
$id = ($num % 10).$id;
$num = floor ($num / 10);
}
}
return (substr ($id, 0, $taille));
}Dans d'autres, quand j'ai besoin de clés privées ou publiques afin de signer ou chiffrer des données (notamment sur des APIs) je passe plutôt par ce code :
function CaractereAleatoire() {
$nb = mt_rand(0, 10 + 26 + 26 - 1);
if ($nb < 10) { // chiffres
return chr(ord('0') + $nb);
}
else if ($nb < 10+26) { // lettres minuscules
return chr(ord('a') + $nb - 10);
}
else if ($nb < 10+26+26) { // lettres majuscules
return chr(ord('A') + $nb - 10 - 26);
}
else {
return '0';
}
}
function GenererIdentifiantAlphaNum($taille=10)
{
$id = "";
for ($j = 0; $j < $taille/5; $j++)
{
$id = CaractereAleatoire();
}
return $id;
}Ca peut aussi servir à proposer des mots de passes mais attention à ne pas négliger la longueur de la chaîne ni l'ajout de symboles spéciaux pour compliquer la chose.
N'oubliez pas que la notion d'aléatoire ne l'est que rarement en informatique : les fonctions de base sont des formules mathématiques avec une valeur d'initialisation. On peut donc théoriquement retrouver la séquence si on reproduit les conditions de départ (ce qui reste quand même assez peu probable).