Aprenda Python: Gerador de Senhas Seguras (Nível Profissional)
Criptografia e Segurança de Dados
Para criar senhas verdadeiramente seguras, não basta apenas sortear caracteres. É preciso garantir entropia (aleatoriedade) e conformidade (presença de diferentes tipos de caracteres).
O Código Completo
Utilizamos o módulo secrets, que é criptograficamente seguro, ao contrário do módulo random comum.
import secrets
import string
def gerar_senha_segura(comprimento=16):
# Definimos os grupos de caracteres
alfabeto = string.ascii_letters + string.digits + string.punctuation
while True:
# Gera a senha aleatória
senha = ''.join(secrets.choice(alfabeto) for _ in range(comprimento))
# Valida se a senha possui: 1 Maiúscula, 1 Minúscula, 1 Número e 1 Símbolo
if (any(c.isupper() for c in senha) and
any(c.islower() for c in senha) and
any(c.isdigit() for c in senha) and
any(c in string.punctuation for c in senha)):
return senha
# Gerando uma senha de alta complexidade
print(f"Sua senha: {gerar_senha_segura(20)}")
Por que usar esta versão?
- Módulo Secrets: Projetado especificamente para senhas e tokens de segurança.
- Validação Ativa: O loop
while Truegarante que a senha nunca seja "fraca" por puro azar estatístico. - Comprimento Recomendado: Alteramos o padrão para 16 caracteres, dificultando ataques de força bruta modernos.
- Símbolos Inclusos: Uso de
string.punctuationpara cobrir todos os caracteres especiais do teclado.