Como criar um gerador de senha usando Python?

Publicados: 2021-08-20

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

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

Por que precisamos de um gerador de senha?

Porque não podemos pensar em diferentes padrões 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 senha disponíveis.

Podemos criar o nosso próprio com as personalizações que gostamos?

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

Vamos criar um gerador de senha.

Gerador de senhas

A melhor coisa sobre como criar nosso próprio gerador de senha é que podemos personalizá-lo como quisermos.

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

A seguir, 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 senha usando Python.

Degraus

  • Armazene todos os personagens 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.
  • random.shuffle os caracteres usando o método random.shuffle .
  • Inicialize uma lista vazia para armazenar a senha.
  • Escreva um loop que itera tempos de length .
    • Escolha um caractere aleatório de todos os caracteres usando o método random.choice .
    • Acrescente o caractere aleatório à senha.
  • Misture 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 se você não puder 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 as etapas descritas 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. Um exemplo de saída será o 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.

A seguir, tentamos garantir que o programa incluirá 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 inserir 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 o número 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.

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

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

 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 possui 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 de senha forte completo.

Conclusão

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

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

A seguir, descubra como construir um jogo da velha em Python.

Happy Coding!