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.
Para construir un generador de contraseñas aleatorias, usaremos este enfoque:
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:
random
incorporado utilizado para generar números aleatoriospassword_list
random.choice()
para cada una de las variables declaradas del personaje.password_list
recién creada cambiando la posición de los elementos cada vez que una nueva contraseña usa el método .shuffle()
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:
password
for
char
en bucle.join()
para cambiar la iteración de la lista de la lista de contraseñas a una cadenaf-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}")
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.