python

Generar contraseña o cadena segura en Python

Con el lenguaje de programación Python es muy fácil generar un token o cadena segura, hablando criptográficamente.

Recientemente se ha introducido el módulo secrets que nos permite generar una contraseña aleatoria y segura para usarla como token, clave de encriptación o cosas de esas.

Cadena aleatoria segura criptográficamente con Python

Si no tienes Python 3, es hora de actualizar. Mira cómo instalarlo aquí.

Importar y usar el módulo secrets

Lo que tenemos que hacer es importarlo así:

import secrets

O si sólo queremos usar una función del mismo, así:

from secrets import choice

De hecho, la función choice será la que usaremos en este post.

Generar cadena aleatoria y segura en Python

Aquí tenemos un ejemplo:

"""
Generar una contraseña o cadena aleatoria y segura criptográficamente
Visita: parzibyte.me/blog
"""
from secrets import choice

caracteres = 'abcdefghijklmnopqrtsuvwxyz1234567890'
longitud = 8  # La longitud que queremos
cadena_aleatoria = ''.join(choice(caracteres) for caracter in range(longitud))
print("La cadena es: ", cadena_aleatoria)

A primera vista puede parecer confuso, pero esa es la forma correcta. Primero declaramos una cadena de donde tomaremos caracteres para formar nuestra cadena aleatoria.

Definimos una longitud y la parte importante es en donde llamamos a join.

Ahí, la función join une una cadena vacía '' con un carácter que choice elige, en un rango determinado por la longitud; es decir, elige 8 veces un carácter aleatorio.

El proceso de cómo elige el carácter es totalmente seguro criptográficamente.

Más caracteres

En el ejemplo anterior definimos los caracteres nosotros, pero Python también tiene un módulo llamado string que, entre otras cosas, tiene una lista de los caracteres más comunes.

Tiene el alfabeto en minúscula ubicado en ascii_letters, lo mismo en mayúscula ubicado en ascii_uppercase y los dígitos en digits.

Sabiendo esto, podemos concatenar y crear una cadena que tendrá más opciones de dónde elegir. Veamos este ejemplo de código:

"""
Generar una contraseña o cadena aleatoria y segura criptográficamente
Visita: parzibyte.me/blog
"""
from secrets import choice
from string import ascii_letters, ascii_uppercase, digits

caracteres = ascii_letters + ascii_uppercase + digits
longitud = 8  # La longitud que queremos
cadena_aleatoria = ''.join(choice(caracteres) for caracter in range(longitud))
print("La cadena es: ", cadena_aleatoria)

Ahora nuestra lista de caracteres ha crecido a:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

Es más larga que antes, proporcionando una opción de elección más grande.

Todavía más caracteres

Aparte de la cadena que vimos antes, podemos añadir otras cosas como espacios, guiones y cosas de esas; todo depende de lo que estemos desarrollando.

Sobre las contraseñas, y otras cosas sobre seguridad

Esto genera contraseñas o cadenas aleatorias seguras, pero no asegura que toda tu app será segura. Recuerda que si quieres guardar contraseñas en una base de datos debes hashearlas de modo que no se pueda hacer el proceso inverso; además de utilizar sal.

Por cierto, aunque aquí usamos una longitud de 8, en la vida real y dependiendo de tus necesidades deberías usar más de 8 para prevenir ataques de fuerza bruta.

Pronto traeré más tutoriales sobre esto.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.