Como criar um gerador de senhas aleatórias em Python

A segurança é uma das partes mais importantes de nossas vidas. A importância da segurança está aumentando dia a dia, pois a maioria das coisas está online. As senhas vêm à tona quando falamos sobre segurança.

Neste artigo, criaremos um gerador de senhas que nos ajudará a gerar senhas aleatórias e fortes rapidamente.

Por que precisamos de um gerador de senhas?

Porque não podemos pensar em padrões diferentes de senhas instantaneamente.

Mas, não é o mesmo caso com computadores. Os computadores podem gerar senhas aleatórias e fortes com base em nossas personalizações em segundos. Existem muitos geradores de senhas disponíveis.

Podemos criar os nossos com as personalizações que gostamos?

Sim, podemos definitivamente criar um. E aqui vamos mostrar como fazer isso.

Vamos criar um gerador de senhas.

Gerador de senhas 💻

O melhor de criar nosso próprio gerador de senhas é que podemos personalizá-lo como quisermos.

Primeiro, criaremos um gerador de senhas que pergunta o comprimento da senha e gera uma senha aleatória contendo dígitos, alfabetos e caracteres especiais.

Em seguida, vamos melhorá-lo perguntando o número de cada tipo de caractere, como o número de dígitos, alfabetos e caracteres especiais.

Então, sem mais delongas, vamos ver as etapas para criar um gerador de senhas usando Python.

  15 Melhores Marceneiros de Vídeo Gratuitos para PC

Passos

  • Armazene todos os caracteres como uma lista. Podemos usar o módulo string do Python ou digitar todos eles.
  • Peça ao usuário para inserir o comprimento da senha.
  • Embaralhe os caracteres usando o método random.shuffle.
  • Inicialize uma lista vazia para armazenar a senha.
  • Escreva um loop que itere tempos de comprimento.
    • Escolha um personagem aleatório de todos os personagens usando o método random.choice.
    • Anexe o caractere aleatório à senha.
  • Embaralhe a lista de senhas resultante para torná-la mais aleatória.
  • Converta a lista de senhas em string usando o método join.
  • Imprima a senha.

Siga as etapas acima e tente escrever o código. Não se preocupe, mesmo que você não consiga escrever o código. Confira o código abaixo.

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()

O código acima é autoexplicativo. Acabamos de seguir os passos descritos para escrever o código. Portanto, você não encontrará nenhum problema em entender o código se ler as etapas.

Agora, execute o código e gere uma senha. Uma saída de exemplo será a seguinte.

Enter password length: 10
d&amIzK%d)

Observe a senha na saída acima. Existe algum dígito? Não. Porque não há garantia de que o programa incluirá dígitos.

  Como desconectar o número de telefone da discórdia

Em seguida, tentamos garantir que o programa inclua dígitos e caracteres especiais solicitando ao usuário que insira o número de dígitos, alfabetos e caracteres especiais que deseja.

Quando o usuário digitar o número de caracteres para cada tipo, o programa incluirá o respectivo número de tipos de caracteres na senha.

Vamos ver o código que aceita a quantidade de caracteres para cada tipo e gera a senha.

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()

Então, qual é a diferença entre o código anterior e este código?

  • Escrevemos loops separados para cada tipo de caractere para adicioná-los à senha.
  • Existem duas verificações condicionais para validar a contagem total de caracteres com o comprimento da senha.
  Como escrever em caixas de texto usando o Apple Pencil no iPad

Nós adicionamos algum código extra. Mas, o padrão é semelhante ao código anterior. Assim, você não encontrará nenhuma dificuldade em compreendê-lo.

Agora, é hora de executar e verificar a saída. Observe a execução de teste a seguir.

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

Se você vir a senha gerada desta vez, ela tem o número mínimo de caracteres que o usuário deseja. E o programa incluiu mais 2 caracteres aleatórios para tornar o comprimento da senha igual à entrada do usuário.

Viva! temos um gerador completo de senhas fortes. 😎

Conclusão

Vimos como criar um gerador de senhas do zero. Podemos adicionar mais recursos a ele? Sim, podemos adicionar quantos quisermos. Mas, certifique-se de que a senha resultante seja forte o suficiente.

Gere as senhas do código e use-as para sua próxima conta online.

Enquanto você faz isso, use o Gerador de Senhas Aleatórias etechpt.com para criar senhas seguras.

Aprenda a escrever igual ou não igual ao código e como construir um jogo da velha em Python.

Boa Codificação! 👩‍💻