Como Criar um Gerador de Senhas Seguras em Python
Uma das formas de evitar isso é usar senhas fortes e aleatórias, que combinem letras maiúsculas, minúsculas, números e símbolos.
Neste post, vamos aprender a criar um Gerador de Senhas Seguras em Python, passo a passo.
Por que usar um gerador de senhas?
Muitas pessoas ainda utilizam senhas fracas, como:
123456
senha123
qwerty
Essas senhas estão entre as mais comuns e fáceis de serem quebradas.
Um gerador de senhas automáticas oferece:
✅ Aleatoriedade – cada senha é única.
✅ Complexidade – mistura caracteres diferentes.
✅ Segurança – mais difícil de ser descoberta por ataques.
Passo 1 – Importando bibliotecas necessárias
O Python já tem tudo que precisamos na biblioteca padrão. Vamos usar:
string
→ contém conjuntos prontos de caracteres (letras, números, símbolos).random
→ para escolher caracteres de forma aleatória.
import string
import random
Passo 2 – Definindo os caracteres possíveis
Queremos que a senha seja formada por:
Letras minúsculas (
a-z
)Letras maiúsculas (
A-Z
)Números (
0-9
)Símbolos especiais (
!@#$%&*...
)
O módulo string
já possui constantes úteis para isso:
caracteres = string.ascii_letters + string.digits + string.punctuation
string.ascii_letters
→ todas as letras (maiúsculas + minúsculas)string.digits
→ números de 0 a 9string.punctuation
→ símbolos de pontuação e especiais
Passo 3 – Gerando uma senha aleatória
Agora, podemos criar uma função que gera senhas com um tamanho definido:
def gerar_senha(tamanho=12):
caracteres = string.ascii_letters + string.digits + string.punctuation
senha = ''.join(random.choice(caracteres) for i in range(tamanho))
return senha
Aqui usamos:
random.choice(caracteres)
→ escolhe um caractere aleatório.join()
→ junta todos os caracteres em uma única string.
Passo 4 – Testando o gerador
print("Senha gerada:", gerar_senha(12))
Exemplo de saída:
Senha gerada: G7$d!rX@pQ2z
Passo 5 – Melhorando a segurança
O gerador atual é bom, mas pode acontecer de uma senha não conter todos os tipos de caracteres (por exemplo, sem número ou sem símbolo). Para garantir mais robustez, podemos modificar a função:
def gerar_senha_segura(tamanho=12):
if tamanho < 4:
raise ValueError("A senha deve ter pelo menos 4 caracteres para ser segura.")
# Garantir pelo menos um de cada tipo
senha = [
random.choice(string.ascii_lowercase),
random.choice(string.ascii_uppercase),
random.choice(string.digits),
random.choice(string.punctuation)
]
# Completar o restante aleatoriamente
caracteres = string.ascii_letters + string.digits + string.punctuation
senha += random.choices(caracteres, k=tamanho-4)
# Embaralhar para não ficar previsível
random.shuffle(senha)
return ''.join(senha)
Agora, qualquer senha gerada terá:
✔ Pelo menos uma letra minúscula.
✔ Pelo menos uma letra maiúscula.
✔ Pelo menos um número.
✔ Pelo menos um símbolo.
Passo 6 – Criando um programa completo
Podemos transformar tudo em um programa simples que o usuário usa no terminal:
import string
import random
def gerar_senha_segura(tamanho=12):
if tamanho < 4:
raise ValueError("A senha deve ter pelo menos 4 caracteres.")
senha = [
random.choice(string.ascii_lowercase),
random.choice(string.ascii_uppercase),
random.choice(string.digits),
random.choice(string.punctuation)
]
caracteres = string.ascii_letters + string.digits + string.punctuation
senha += random.choices(caracteres, k=tamanho-4)
random.shuffle(senha)
return ''.join(senha)
# Interface simples no terminal
print("=== Gerador de Senhas Seguras ===")
tamanho = int(input("Digite o tamanho da senha desejada: "))
print("Senha gerada:", gerar_senha_segura(tamanho))
Exercícios para praticar
Adapte o programa para gerar várias senhas de uma vez.
Permita que o usuário escolha se deseja usar símbolos ou não.
Crie uma interface gráfica usando
tkinter
para facilitar o uso.Adicione uma função que verifique a força da senha gerada.
Conclusão
Criar um gerador de senhas seguras em Python é uma forma prática e divertida de aprender a trabalhar com strings, listas e funções. Além disso, você estará criando algo realmente útil para aumentar sua segurança digital.
A partir desse exemplo, você pode evoluir para geradores mais avançados, com interface gráfica, exportação para arquivos ou até integração em aplicativos reais.
Comentários
Postar um comentário