Aprenda a codificar un generador de contraseñas en Python -para generar contraseñas seguras- utilizando el módulo Python secrets.
Python es un lenguaje de programación versátil que puede utilizar en aplicaciones de automatización, desarrollo web, análisis de datos y mucho más.
Puede utilizar Python para automatizar tareas del mundo real como la supervisión de sitios web, el envío de correos electrónicos y la generación de contraseñas. En este tutorial, aprenderá a crear un generador de contraseñas seguro y aleatorio en Python.
Empecemos..
3 razones por las que debería codificar un generador de contraseñas en Python
¿Alguna vez se ha sentido cansado de generar contraseñas seguras y llevar un registro de ellas? He aquí por qué debería considerar codificar un generador de contraseñas en Python.
1. Automatice el proceso de generación de contraseñas
En un día normal de su vida, visitará numerosos sitios web, desde sitios de comercio electrónico hasta plataformas de aprendizaje y codificación. La mayoría de los sitios web requieren que inicie sesión con credenciales. Se trata de una tarea repetitiva que puede automatizar utilizando un script de Python.
2. Generar contraseñas seguras
Generar contraseñas seguras que cumplan las restricciones de seguridad puede ser todo un reto; las contraseñas triviales que no son seguras son susceptibles de sufrir ataques de seguridad.
Puede utilizar Python para generar contraseñas seguras mediante programación. Esto le permite ejecutar el script para generar contraseñas según sea necesario, sin preocuparse de que la contraseña sea segura.
3. Añada un proyecto práctico a su cartera
Si usted es un programador principiante de Python, debe construir proyectos para perfeccionar sus habilidades y mostrar su experiencia en programación a través de un portafolio.
Además de un sencillo script de Python, puede personalizarlo aún más y publicarlo como un paquete PyPI. También puede añadir una interfaz gráfica de usuario utilizando bibliotecas como Tkinter, ¡y mucho más!
De esta forma, podrá codificar su propio generador de contraseñas -para generar y gestionar de forma segura sus contraseñas- en los distintos sitios.
El Módulo Aleatorio en Python: ¿Es suficientemente seguro?
El módulo aleatorio de Python también proporciona funciones que le permiten tomar muestras de un alfabeto y construir secuencias aparentemente aleatorias. El módulo aleatorio genera secuencias pseudoaleatorias. Analicemos qué significa pseudoaleatoriedad.
El término pseudoaleatorio significa que aunque la secuencia parezca aleatoria, en realidad es determinista.
Por lo tanto, si establece una semilla aleatoria, entonces el módulo aleatorio producirá la misma secuencia en su máquina, y para cualquiera que ejecute el mismo script con la misma semilla.
Esta es la razón por la que no debe utilizar aleatorio para aplicaciones en las que la seguridad es importante, como las contraseñas.
Entonces, ¿cuándo puede utilizar el módulo aleatorio
?
Para todas las aplicaciones que no sean sensibles, puede utilizar el módulo aleatorio. Por ejemplo, hay tres conjuntos de cuestionarios, A, B y C en una clase de 40 alumnos. Le gustaría asignar un juego concreto a cada alumno de forma aleatoria.
En este caso, puede utilizar random.choice()
dentro de una expresión de comprensión de lista, como se muestra a continuación:
import random
papeles = ['A','B','C']
q_list = [random.choice(papers) for i in range(40)]
print(q_list)
Salida de ejemplo:
['A', 'A', 'B', 'B', 'B', 'B', 'C', 'B', 'A', 'C', 'C', 'B',
'C', 'A', 'B', 'A', 'A', 'C', 'C', 'A', 'A', 'C', 'A', 'C',
'A', 'C', 'B', 'B', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']
📑 Conclusión clave: Para simulaciones estadísticas, puede utilizar el módulo
random
; para aplicaciones sensibles, utilice el módulosecrets
.
Módulo Secrets de Python: Su clave para contraseñas seguras
La Propuesta de Mejora de Python, PEP 506, aconseja a los desarrolladores utilizar el módulo secrets
siempre que una secuencia deba ser criptográficamente segura, como contraseñas y tokens de seguridad.
El módulo secrets
the tiene varias funciones incorporadas que le permiten hacer lo siguiente:
- Generar secuencias de números aleatorios que sean seguras para aplicaciones criptográficas.
- Utilice funciones como
choice()
,randbits()
yrandbelow()
para generar números aleatorios seguros. - Genere tokens para el restablecimiento de contraseñas, URL temporales y mucho más.
Cómo codificar un generador de contraseñas en Python [en 4 pasos]
Prerrequisitos: Necesita tener Python 3.6 o una versión posterior instalada para codificar junto con este tutorial. También puede ejecutar el código de ejemplo en el Editor de código Python en línea de Geekflare.
Paso 1: Importar los módulos necesarios
Como primer paso, vamos a importar el módulo secrets
. Este módulo está incorporado en la biblioteca estándar de Python, por lo que puede importarlo de la siguiente manera:
import secrets
Importemos también el módulo string
incorporado en Python:
import string
Paso 2: Definir el alfabeto
El siguiente paso es definir el alfabeto. El alfabeto denota el conjunto de todos los caracteres que consideraremos para la generación de contraseñas. En este caso, queremos que contenga lo siguiente: letras minúsculas y mayúsculas y caracteres especiales.
El módulo string
proporciona constantes de cadena que podemos utilizar para definir el alfabeto. Utilizaremos las siguientes constantes de cadena:
- La constante
ascii_letters
es una concatenación de letras minúsculas y mayúsculas. - La constante
dígitos
es la cadena que contiene los números del 0 al 9:'0123456789'
. - La constante de
puntuación
es la cadena de todos los caracteres especiales.
letras = cadena.letras_ascii
dígitos = cadena.dígitos
caracteres_especiales = cadena.puntuación
Por último, concatene las constantes de cadena anteriores para obtener el alfabeto.
alfabeto = letras dígitos caracteres_especiales
Paso 3: Fijar la longitud de la contraseña; Generar una contraseña
Almacenemos la longitud de la contraseña en la variable, pwd_length
. En este ejemplo, la cadena de contraseña tiene una longitud de 12.
pwd_length = 12
▶️ Ahora, ejecute la siguiente celda de código para generar una contraseña:
pwd = ''
for i in range(pwd_length):
pwd = ''.join(secrets.choice(alphabet))
print(pwd)
# Salida de muestra
}2:Lz,1!Gvo@
El código anterior hace lo siguiente:
- La cadena de contraseña
pwd
es inicialmente una cadena vacía. - Sabemos que
secrets.choice(alphabet)
devuelve un carácter, muestreado al azar delalfabeto
. - Utilizamos el método
join()
para añadir este carácter a la cadenapwd
. Como no queremos ningún espacio en blanco entre los caracteres, especificamos que el separador sea''
. - Para repetir los pasos anteriores para generar una contraseña, utilizamos un bucle que se ejecuta durante tantas iteraciones como la longitud de la contraseña.
Paso 4: Personalice sus contraseñas en función de las restricciones
Puede personalizar la generación de contraseñas comprobando si cumple ciertas restricciones.
Por ejemplo, comprobemos si la cadena de contraseña generada de longitud 12 satisface las siguientes restricciones:
- La cadena
pwd
debe contener al menos un carácter especial. - Debe contener al menos dos dígitos.
En el fragmento de código siguiente, puede modificar la condición que comprueba la sentencia if
en función de las restricciones que defina.
while True
pwd = ''
for i in range(longitud_pwd):
pwd = ''.join(secrets.choice(alphabet))
if (any(char in caracteres_especiales for char in pwd) and
sum(char en digitos para char en pwd)>=2):
break
print(pwd)
# Salida de ejemplo
lX]{`y47pM4t
En la celda de código anterior, utilizamos un bucle while infinito que se ejecuta mientras la cadena de contraseña pwd
no cumpla las restricciones. Cuando la contraseña generada, pwd
satisface las restricciones, salimos del bucle infinito.
Aquí está el código completo para el generador de contraseñas de Python:
# importaciones necesarias
importar secretos
importar cadena
# definir el alfabeto
letras = cadena.ascii_letras
dígitos = cadena.dígitos
caracteres_especiales = cadena.puntuación
alfabeto = letras dígitos caracteres_especiales
# fijar longitud de contraseña
longitud_contraseña = 12
# generar una cadena de contraseña
pwd = ''
for i in range(longitud_pwd):
pwd = ''.join(secrets.choice(alphabet))
print(pwd)
# generar contraseña que cumpla las restricciones
mientras
pwd = ''
for i in range(longitud_pwd):
pwd = ''.join(secrets.choice(alphabet))
if (any(char in caracteres_especiales for char in pwd) and
sum(char en digitos para char en pwd)>=2):
break
print(pwd)
Conclusión
¡Enhorabuena por haber terminado este tutorial! 🎉Ahora ha aprendido a codificar un generador de contraseñas en Python.
- Para generar contraseñas criptográficamente seguras, debe utilizar el módulo secrets y no el módulo random.
- Una contraseña segura debe ser lo suficientemente larga y debe ser aleatoria en el sentido de que no pueda predecirse o generarse fácilmente. Debe ser una combinación de letras mayúsculas y minúsculas, dígitos y caracteres especiales.
- Python incorpora un módulo de cadenas que proporciona todas las letras, dígitos y caracteres especiales en las constantes ascii_letras, dígitos y puntuación, respectivamente. Utilice la sintaxis: cadena.constante para acceder a estas constantes de cadena.
- Puede utilizar las constantes anteriores para definir un alfabeto (un conjunto de todos los caracteres) para la generación de contraseñas.
- Una vez que haya definido un alfabeto, puede utilizar secrets.choice() para muestrear un carácter aleatorio del mismo. Para repetir esto para la longitud de la contraseña, puede utilizar un bucle for.
▶️ A continuación, lea la lista de servidores web Python a utilizar.