Cómo crear un generador de contraseñas aleatorias en Python

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 se realizan 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 ayude a generar rápidamente contraseñas seguras y aleatorias.

¿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 gustan?

Sí, definitivamente podemos crear uno. Y aquí vamos a mostrarte cómo hacerlo.

Vamos a crear un generador de contraseñas.

Generador de contraseñas 💻

Lo mejor de crear nuestro propio generador de contraseñas es que podemos personalizarlo como más nos guste.

Primero, crearemos un generador de contraseñas que pregunte la longitud de la contraseña y genere una contraseña aleatoria que contenga dígitos, letras 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

  • Guarde todos los caracteres como una lista. Podemos usar el módulo de cadenas de Python o escribirlos todos.
  • Pida al usuario que introduzca la longitud de la contraseña.
  • Baraja los caracteres usando el método random.shuffle.
  • Inicialice una lista vacía para almacenar la contraseña.
  • Escriba un bucle que itere tiempos de duración.
    • Elija un personaje aleatorio de todos los personajes usando el método random.choice.
    • Agregue el carácter aleatorio a la contraseña.
  • Mezcla la lista de contraseñas resultante para que sea más aleatoria.
  • Convierta la lista de contraseñas en una cadena utilizando el método de unión.
  • Imprime la contraseña.

Siga los pasos anteriores e intente escribir código. No se preocupe, incluso si no puede escribir el código. Echa un vistazo al 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 ejemplo de salida 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, tratamos de garantizar que el programa incluirá dígitos y caracteres especiales pidiéndole al usuario que ingrese la cantidad de dígitos, alfabetos y caracteres especiales que desea.

Cuando el usuario ingresa la cantidad de caracteres para cada tipo, el programa incluirá la cantidad respectiva 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 número 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. Mira 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 ve la contraseña generada esta vez, tiene la cantidad mínima 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.

Mientras lo hace, utilice el generador de contraseñas aleatorias kirukiru.es para crear contraseñas seguras.

Aprenda a escribir código igual o no igual y cómo crear un juego de tres en raya en Python.

¡Feliz codificación! 👩‍💻