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).
Para criar senhas verdadeiramente seguras, não basta apenas sortear caracteres. É preciso garantir entropia (aleatoriedade) e conformidade (presença de diferentes tipos de caracteres).
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)}")
while True garante que a senha nunca seja "fraca" por puro azar estatístico.string.punctuation para cobrir todos os caracteres especiais do teclado.