Estoy buscando una forma, específicamente en PHP, de que se garantice que siempre obtenga una clave única.Generación de clave única
he hecho lo siguiente:
strtolower(substr(crypt(time()), 0, 7));
Pero he encontrado que de vez en cuando termino con una clave duplicada (rara vez, pero con la suficiente frecuencia).
También he pensado en hacer:
strtolower(substr(crypt(uniqid(rand(), true)), 0, 7));
embargo, según el sitio web de PHP, uniqid() podría, si uniqid() se llama dos veces en el mismo microsegundo, que podría generar la misma clave. Estoy pensando que la adición de rand() raramente lo haría, pero aún es posible.
Después de las líneas mencionadas anteriormente también elimino caracteres como L y O por lo que es menos confuso para el usuario. Esto quizás sea parte de la causa de los duplicados, pero sigue siendo necesario.
Una opción que tengo en mente es crear un sitio web que generará la clave, almacenándola en una base de datos, asegurando que sea completamente única.
¿Alguna otra idea? ¿Hay sitios web que ya hacen esto que tienen algún tipo de API o simplemente devuelven la clave? Encontré http://userident.com pero no estoy seguro de si las claves serán completamente únicas.
Esto debe ejecutarse en segundo plano sin ninguna intervención del usuario.
¿Por qué las contraseñas deben ser completamente únicas? –
Supongo que crypt es solo porque necesita criptar valor, no tiene nada que ver con la creación de valor único, ¿o no? –
Vea también: [Función PHP para generar v4 UUID] (http://stackoverflow.com/a/15875555/1338292). –