Je cherche à créer une fonction réutilisable qui va générer une clé aléatoire avec des caractères ACSII imprimables de longueur choisie (de 2 à 1000+). Je pense que les caractères ASCII imprimables seraient 33-126. La clé n'a pas besoin d'être complètement unique, juste unique si elle est générée exactement à la même milliseconde (donc uniqid()
ne fonctionnera pas).Quel est le meilleur moyen de générer une clé aléatoire dans PHP?
Je pense qu'une combinaison de chr()
et mt_rand()
pourrait fonctionner.
Est-ce la voie à suivre, ou est-ce que quelque chose d'autre est la meilleure méthode?
Editer:uniqid()
ne fonctionnera pas non plus car il n'a pas de paramètre de longueur, c'est juste ce que PHP vous donne.
Mon Idée: Voici ce que je suis venu avec:
function GenerateKey($length = 16) {
$key = '';
for($i = 0; $i < $length; $i ++) {
$key .= chr(mt_rand(33, 126));
}
return $key;
}
Y at-il des problèmes avec cela?
Autre édition: La plupart des autres questions concernent la génération de mot de passe. Je veux une plus grande variété de caractères et je me fous de 1
vs l
. Je veux que le nombre maximum de clés possibles soit possible.
Remarque: la clé générée ne doit pas nécessairement être cryptographiquement sécurisée.
générateurs de nombres aléatoires ne unique généralement pas _guarantee_, même si "Généré exactement la même milliseconde." Pour garantir l'unicité, vous devez être capable de détecter une collision. – danorton
Ajouté gros avertissement sur la sécurité, sinon je devrais downvote chaque réponse. Soyez averti que certaines des fonctions dans les réponses retournent binaire, d'autres retournent hex, d'autres base64 etc etc. –