Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Generando series aleatorias de 32 caracteres con Python/Django

5 de noviembre de 2014

Muy buenas a todos, amigos quiero generar una cadena o serie de 32 caracteres alfanuméricos y que se me impriman en mi page.html al estilo "campo de serie" (que es donde me imprimiría la serie de 32 caracteres) y un botón que al darle click se comporte como generador de modo que al darle repetidamente a este me arroje en el "campo de serie" una serie distinta cada vez de manera irrepetida.

Intenté hacerlo con solo números desde la consola de Python y me funciona pero no sabría como plantearlo ahora con caracteres alfanuméricos e imprimirlo con django en una pagina. No se si vaya al caso pero estoy manejando para mis ejercicios un esquema de models.py, views.py, forms.py, urls.py para acostumbrarme a los ambientes de proyectos mas grandes.

En esta ocasión no se ni como proceder, no sabría como plantearlo en mi views ni en el forms y por ende representarlo en mi .html.

Estuve viendo esta página y me interesó muchísimo lo poco que entendía. Me gustaría que mi generador tuviese algo de esas propiedades de seguridad si se le puede llamar "crípticas" ya que este tema me apasiona demasiado y qué mejor que asociarlo con django ahora =D.

Un saludo.


Respuestas

#1

Con respecto a la idea de generar cadenas aleatorias cripto-seguras, no puedo ayudarte porque no controlo nada de ese tema. Pero con respecto a la cadena alfanumérica aleatoria de 32 caracteres, creo que sí que puedo proponerte algo.

En el ámbito de la programación es muy común resolver el problema que estás planteando utilizando los identificadores UUID, que básicamente consisten en:

La intención de los UUID es habilitar, a los sistemas distribuidos, un identificador de información único sin una importante coordinación central. Esto es, cualquiera puede crear un UUID y usarlo para identificar algo con una razonable confianza de que el identificador nunca será usado inintencionadamente por cualquiera para cualquier cosa.

Así que gracias a los UUID puedes generar cadenas alfanuméricas aleatorias con una probabilidad práctica nula de repetirse y que encima cumplen un estándar seguido por todos los lenguajes de programación y tecnologías.

En Python es trivial generar identificadores UUID gracias al módulo uuid. Como verás, existen varios tipos diferentes de UUID. En tu caso el más apropiado sería el UUID v4, que genera una cadena alfanumérica (en realidad, hexadecimal) de 32 caracteres.

>>> import uuid
>>> uuid.uuid4()
UUID('26fd2706-8baf-433b-82eb-8c7fada847dc')

Como son cadenas muy aleatorias, no hace falta que pulses el botón de regenerar UUID repetidamente en la página web. No obstante, si quieres hacerlo, la buena noticia es que al ser UUID un estándar, no te costará encontrar librerías y pequeños scripts de JavaScript que los generan.

@javiereguiluz

5 noviembre 2014, 16:33
#2

como base me ha servido mucho, muchas gracias amigo

@AlexDamas

5 noviembre 2014, 22:33