Créer un jeton aléatoire en Javascript basé sur les détails de l'utilisateur
Je veux créer une chaîne de caractères aléatoires (token) qui peut être utilisé pour identifier un utilisateur, tout en évitant tout risque de conflits avec les autres utilisateurs de " jetons.
Ce que je pensais était un hachage MD5 de navigator.userAgent + new Date().getTime()
pour générer le jeton mais qui nécessite un ensemble de Javascript MD5 bibliothèque de hachage qui je n'ai pas vraiment envie de faire.
Il doit être composé de A-Z/0-9 personnages et, idéalement, pas plus de 32 caractères. Je suis ouvert à toutes les idées. Merci!
Juste pour clarifier, je ne suis pas à la recherche de toute chaîne aléatoire générateur, la chaîne aléatoire doit être généré par les utilisateurs de détails sont disponibles à l'aide de Javascript et peut également utiliser le temps pour éviter les conflits potentiels!
- comme vous l'avez écrit, la seule chose qui me vient à l'esprit est une fonction de hachage. vous pourriez tenter de google quelque chose comme "fonction de hachage javascript" et peut-être que vous trouverez sometihng léger
Vous devez vous connecter pour publier un commentaire.
Caisse crypto.js projet. Son une collection d'algorithmes de chiffrement. Le projet a séparé les fichiers js pour chacun des algorithmes de hachage.
Vous pouvez générer un nombre aléatoire et le convertir en base 36 (
0-9a-z
):navigator.userAgent
n'est pas unique pour tout le monde, si ce n'est pas l'épreuve des balles.radix
(36
) paramètre de.toString
dansrand
fonction vous uniquement numériques de hachage -- si quelqu'un voudrais, pour l'une comme ça:return Math.random().toString().substr(2);
Cette fonction vous permet de régler la longueur de jeton et de caractères autorisés.
Appelez simplement generate_token
Je utiliser une approche similaire à Kareem du, mais avec moins d'appels de fonction et intégré dans les opérations de matrice pour un gros boost de performance.
Selon un test de performance, cette méthode est plus performante que la accepté de répondre par une petite marge. En outre, il fournit un paramètre
n
pour générer de la taille de jeton de longueur à partir d'une liste blanche de caractères acceptables. Il est flexible et efficace.Il est très peu probable, mais les Mathématiques.random() peut retourner
0.0
. Dans ce cas, la solution de pimvdb serait de retour""
(chaîne vide). Donc, voici une autre solution, qui retourne dans tous les cas, un hasard base36 avec 10 caractères, longueur:JS: