Cada sitio web tiene algún tipo de interfaz de seguridad que requiere la autenticación del usuario. Estos formularios suelen utilizar su correo electrónico y contraseña para acceder al sitio web. El uso de una contraseña segura al iniciar sesión es esencial para evitar que los delincuentes (hackers) obtengan acceso a su cuenta.
Este artículo le enseñará cómo crear un generador de contraseñas aleatorias usando Python generando una combinación de letras, números y símbolos como caracteres codificados, lo que dificulta descifrar o adivinar la contraseña.
Construyamos juntos un generador de contraseñas aleatorias.
Empezando
Para construir un generador de contraseñas aleatorias, usaremos este enfoque:
- Escriba todos los tipos de caracteres de contraseñas aceptables, como letras, números y símbolos
- Ofrezca a los usuarios la posibilidad de ingresar la cantidad de letras, símbolos y números para la contraseña generada
- Aleatoriza el orden de los caracteres para que sea difícil de adivinar
Creación del generador de contraseñas aleatorias
Como sabes, algunas aplicaciones en Internet sugieren contraseñas aleatorias cuando creas una nueva cuenta. Los caracteres aleatorios los decide usted y pueden tener hasta ocho caracteres.
Cree un nuevo archivo, main.py
, para escribir los scripts de la aplicación.
# main.py letters = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ] numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] print("Welcome to the PyPassword Generator!") nr_letters = int(input("How many letters would you like in your password?\n")) nr_symbols = int(input(f"How many symbols would you like?\n")) nr_numbers = int(input(f"How many numbers would you like?\n"))
Los caracteres del bloque de código anterior forman la combinación del generador de contraseñas presentado en una lista.
Lo siguiente es asegurarse de que los usuarios puedan ingresar una cifra, un número entero que representa la cantidad de veces que aparecerá un carácter cuando se muestre el resultado final y se declare con una variable.
\n
: representa que el valor de entrada irá a la siguiente línea
Ahora, actualicemos el resto del código. Copia y pega lo siguiente:
# main.py # Password Generator Project import random # add this # letters, numbers, and symbols lists # users' input for the amount of characters # add these below password_list = [] for char in range(1, nr_letters + 1): password_list.append(random.choice(letters)) for char in range(1, nr_symbols + 1): password_list.append(random.choice(numbers)) for char in range(1, nr_numbers + 1): password_list.append(random.choice(symbols)) random.shuffle(password_list)
El bloque de código hace lo siguiente:
- Importe el módulo
random
incorporado utilizado para generar números aleatorios - Cree una lista vacía [] con la variable
password_list
- Iterar a través del número en la función de rango para crear una secuencia de números desde el índice de inicio y terminar con el último índice más 1
- A continuación, agregue la lista vacía para obtener un elemento seleccionado al azar usando el método
random.choice()
para cada una de las variables declaradas del personaje. - Mezcla la lista de
password_list
recién creada cambiando la posición de los elementos cada vez que una nueva contraseña usa el método.shuffle()
Convierta la lista de contraseñas en una cadena
Copie y actualice el siguiente código:
# main.py # import # letters, numbers, and symbols lists # users' input for the amount of characters # randomize characters # add this password = "" for char in password_list: password += char # convert list to string pwd = ''.join(password_list) print(f"Your random password to use is: {pwd}")
El proceso de convertir una lista en una cadena es el siguiente:
- Crear una variable de cadena vacía,
password
- Iterar a través de la lista de contraseñas usando la palabra clave
for
- Concatenar las cadenas de contraseña con la variable
char
en bucle - Use el método
.join()
para cambiar la iteración de la lista de la lista de contraseñas a una cadena - Finalmente, muestre el resultado de la contraseña usando las
f-strings
El resultado final del código:
# main.py import random letters = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ] numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] print("Welcome to the PyPassword Generator!") nr_letters = int(input("How many letters would you like in your password?\n")) nr_symbols = int(input(f"How many symbols would you like?\n")) nr_numbers = int(input(f"How many numbers would you like?\n")) password_list = [] for char in range(1, nr_letters + 1): password_list.append(random.choice(letters)) for char in range(1, nr_symbols + 1): password_list.append(random.choice(numbers)) for char in range(1, nr_numbers + 1): password_list.append(random.choice(symbols)) random.shuffle(password_list) password = "" for char in password_list: password += char print("char", char) # convert list to string pwd = ''.join(password_list) print(f"Your random password to use is: {pwd}")
Conclusión
En este artículo, desarrolló una aplicación que genera contraseñas aleatorias que no son las mismas en cada intento, lo que lo convierte en un caso de uso dinámico para generar tantas contraseñas como sea posible.
Aunque este puede no ser el mejor enfoque para generar contraseñas aleatorias, la esencia del artículo es mostrar la posibilidad de usar el programa Python para crear una contraseña. Aún así, la salida es inesperada y diferente con cada nueva entrada, sin importar la longitud de la contraseña.
Aprende más