Comment générer un homme sympathique ID unique en Python?
Comment puis-je générer une valeur d'ID unique qui peut être facilement transmis par courriel ou par téléphone, qui peut être facilement mémorisable alors toujours pas être facilement deviner.
Je suis en utilisant la base de données. Mais comme je suis loin de donner l'ID de gens que je ne veux pas qu'il soit lié à une base de données. Je pourrais faire quelque chose avec l'ID unique j'ai déjà dans la base de données, mais ne peut pas l'utiliser directement, pour éviter d'être deviner.
Je suis à l'aide de Python et ont essayé d'utiliser uuid
, mais uuid
est trop long pour être lisible par l'homme.
Est-il possible de créer un homme sympathique prononçable ID?
question édité.
Qu'en est
hash(str(your_id))
Vous pouvez enlever les valeurs de hachage, mais qui va provoquer une collision plus probable. Mais c'est le problème que vous avez à traiter. Pas de collision -> pas lisible, lisible -> collisions possibles.
OriginalL'auteur iamgopal | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez faire est d'assembler des syllabes pour créer prononçable pseudo-mots. Vous pouvez créer des syllabes dans la langue que vous aimez faire les mots qui peuvent être prononcés et communiqués, mais ne fait pas de dire quoi que ce soit.
Voici un article à propos de la façon dont une personne a créé, lisible par les Uides pour parler du point de vue phonétique et certains pièges.
Lire le lien ci-dessus pour quelques-uns des pièges que vous devriez considérer lors de la prise d'une telle approche.
Vous pouvez simplement utiliser une chaîne de lettres alphabétiques, mais les présenter comme la L'alphabet phonétique de l'OTAN au lieu de simplement l'alphabet.
OriginalL'auteur
Pour les e-mails, ce que j'utilise est:
Vous pouvez augmenter/diminuer la longueur, en modifiant le nombre.
Parfois, vous obtiendrez + et /caractères et vous pouvez enlever si vous le souhaitez.
Edit:
Puisque vous aussi vous voulez de les transmettre au téléphone, peut-être
b32encode(urandom(5))
serait un meilleur choix car il l'habitude de vous donner tout en minuscules ou des caractères inhabituels.OriginalL'auteur nima
Comment au sujet de quelque chose comme Amazon payphrases? Convertir le binaire de l'ID d'une séquence de mots anglais.
Si vous voulez quelque chose avec la même gamme comme un UUID, vous avez besoin de représenter 16 octets.
Pour rester raisonnable, de restreindre la phrase de 4 mots, de sorte que chaque mot représente 4 octets, ou 65536 possibilités, de sorte que vous aurez besoin d'un dictionnaire de 262,144 mots.
EDIT:
En fait à la réflexion, ce qui pourrait être mieux, c'est une sorte de mad lib phrase - il limiter le nombre de mots et peut le rendre plus facile à retenir car il a une structure grammaticale. Il aura besoin d'être plus long, bien sûr, peut-être quelque chose comme ceci:
(un/une/la/#) (adj) (nom) (verbe)(tendue) (adverbe), tandis que (un/une/la/#) (adj) (nom) (verbe) (adverbe).
Votre montage est trop compliqué. Vient de charger un dictionnaire et à l'aide de
memorable_id = ''.join(dictionary[random.randint(0, 65535)] for Null in range(4))
est mieux.OriginalL'auteur so12311
Sûr, mais il faut un peu plus de restrictions sur votre espace du problème, à savoir:
Alors vous feriez quelque chose comme:
OriginalL'auteur MatthewWilkes
Ici est basé sur l'uuid exemple. Ajuster l'1000000 d'augmenter ou de diminuer la portée de votre id. Puisque vous êtes à la réduction de la portée de l'id, vous aurez probablement à vérifier pour voir si l'ID existe déjà.
À l'aide d'un nombre aléatoire est complètement équivalente à l'aide d'une table de hachage de taille égale, si vous n'avez pas besoin de reproduire le même ID de nouveau plus tard pour le même objet.
OriginalL'auteur robert