¿Cómo crear un generador de contraseñas usando Python?

Publicado: 2021-08-20

La seguridad es una de las partes más cruciales de nuestras vidas. La importancia de la seguridad aumenta día a día, ya que la mayoría de las cosas están en línea. Las contraseñas salen a la luz cuando hablamos de seguridad.

En este artículo, crearemos un generador de contraseñas que nos ayudará a generar contraseñas aleatorias y seguras rápidamente.

¿Por qué necesitamos un generador de contraseñas?

Porque no podemos pensar en diferentes patrones de contraseñas al instante.

Pero no es el mismo caso con las computadoras. Las computadoras pueden generar contraseñas seguras y aleatorias basadas en nuestras personalizaciones en segundos. Hay muchos generadores de contraseñas disponibles.

¿Podemos crear el nuestro con las personalizaciones que nos gusten?

Sí, definitivamente podemos crear uno. Y aquí le mostraremos cómo hacerlo.

Creemos un generador de contraseñas.

Generador de contraseñas

Lo mejor de crear nuestro propio generador de contraseñas es que podemos personalizarlo como queramos.

Primero, crearemos un generador de contraseñas que preguntará la longitud de la contraseña y genera una contraseña aleatoria que contiene dígitos, alfabetos y caracteres especiales.

A continuación, lo mejoraremos preguntando el número de cada tipo de carácter, como el número de dígitos, alfabetos y caracteres especiales.

Entonces, sin más preámbulos, veamos los pasos para crear un generador de contraseñas usando Python.

Pasos

  • Almacene todos los personajes como una lista. Podemos usar el módulo de cadenas de Python o escribirlos todos.
  • Pídale al usuario que ingrese la longitud de la contraseña.
  • random.shuffle los caracteres usando el método random.shuffle .
  • Inicialice una lista vacía para almacenar la contraseña.
  • Escribe un bucle que repita tiempos de length .
    • Elija un carácter aleatorio de todos los caracteres utilizando el método random.choice .
    • Agregue el carácter aleatorio a la contraseña.
  • Mezcle la lista de contraseñas resultante para hacerla más aleatoria.
  • Convierta la lista de contraseñas en una cadena utilizando el método de join .
  • Imprime la contraseña.

Siga los pasos anteriores e intente escribir código. No se preocupe, incluso si no puede escribir el código. Consulte el código a continuación.

Código

 import string import random ## characters to generate password from characters = list(string.ascii_letters + string.digits + "[email protected]#$%^&*()") def generate_random_password(): ## length of password from the user length = int(input("Enter password length: ")) ## shuffling the characters random.shuffle(characters) ## picking random characters from the list password = [] for i in range(length): password.append(random.choice(characters)) ## shuffling the resultant password random.shuffle(password) ## converting the list to string ## printing the list print("".join(password)) ## invoking the function generate_random_password()

El código anterior se explica por sí mismo. Acabamos de seguir los pasos descritos para escribir código. Por lo tanto, no encontrará ningún problema para comprender el código si lee los pasos.

Ahora, ejecute el código y genere una contraseña. Un resultado de ejemplo será el siguiente.

 Enter password length: 10 d&amIzK%d)

Observe la contraseña en la salida anterior. ¿Hay algún dígito? No. Porque no hay garantía de que el programa incluya dígitos.

A continuación, intentamos garantizar que el programa incluirá dígitos y caracteres especiales pidiéndole al usuario que ingrese el número de dígitos, alfabetos y caracteres especiales que desee.

Cuando el usuario ingresa el número de caracteres para cada tipo, el programa incluirá el número respectivo de tipos de caracteres en la contraseña.

Veamos el código que acepta la cantidad de caracteres de cada tipo y genera la contraseña.

 import string import random ## characters to generate password from alphabets = list(string.ascii_letters) digits = list(string.digits) special_characters = list("[email protected]#$%^&*()") characters = list(string.ascii_letters + string.digits + "[email protected]#$%^&*()") def generate_random_password(): ## length of password from the user length = int(input("Enter password length: ")) ## number of character types alphabets_count = int(input("Enter alphabets count in password: ")) digits_count = int(input("Enter digits count in password: ")) special_characters_count = int(input("Enter special characters count in password: ")) characters_count = alphabets_count + digits_count + special_characters_count ## check the total length with characters sum count ## print not valid if the sum is greater than length if characters_count > length: print("Characters total count is greater than the password length") return ## initializing the password password = [] ## picking random alphabets for i in range(alphabets_count): password.append(random.choice(alphabets)) ## picking random digits for i in range(digits_count): password.append(random.choice(digits)) ## picking random alphabets for i in range(special_characters_count): password.append(random.choice(special_characters)) ## if the total characters count is less than the password length ## add random characters to make it equal to the length if characters_count < length: random.shuffle(characters) for i in range(length - characters_count): password.append(random.choice(characters)) ## shuffling the resultant password random.shuffle(password) ## converting the list to string ## printing the list print("".join(password)) ## invoking the function generate_random_password()

Entonces, ¿cuál es la diferencia entre el código anterior y este código?

  • Hemos escrito bucles separados para cada tipo de carácter para agregarlos a la contraseña.
  • Hay dos comprobaciones condicionales para validar el recuento total de caracteres con la longitud de la contraseña.

Hemos agregado un código adicional. Pero el patrón es similar al código anterior. Por lo tanto, no encontrará ninguna dificultad para comprenderlo.

Ahora es el momento de ejecutar y verificar la salida. Mire la siguiente ejecución de prueba.

 Enter password length: 10 Enter alphabets count in password: 3 Enter digits count in password: 2 Enter special characters count in password: 3 V2(&#XlQq1

Si ves la contraseña generada esta vez, tiene el número mínimo de caracteres que el usuario desea. Y el programa ha incluido 2 caracteres aleatorios más para que la longitud de la contraseña sea igual a la entrada del usuario.

¡Viva! tenemos un completo generador de contraseñas seguras.

Conclusión

Hemos visto cómo crear un generador de contraseñas desde cero. ¿Podemos agregarle más funciones? Sí, podemos agregar tantos como queramos. Pero asegúrese de que la contraseña resultante sea lo suficientemente segura.

Genere las contraseñas a partir del código y utilícelas para su próxima cuenta en línea.

A continuación, descubra cómo crear un juego de tic-tac-toe en Python.

¡Feliz codificación!