Aprenda Python: Gerador de Senhas Seguras (Nível Profissional)

POR CÓDIGO DA HORA • 12 MARÇO 2026

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 True garante 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.punctuation para cobrir todos os caracteres especiais do teclado.