Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Minha resposta à essa questão:

Preferi utilizar o secrets ao inves do random por motivos de que eu queria algo que fosse realmente imprevisivel. Estou orientando meus estudos à area de segurança e esse excercicio veio a calhar como codigo base para um projeto no qual estou trabalhando.

import secrets
import string

# Generates a function with a result of a predetermined size.
def generate_password(length=12):
    # Since there are four sets of characters, the code must generate at least one of each, that is, at least 4.
    if length < 4 : 
        raise ValueError("Password must have at least 4 characters.")

    # Character sets
    upper = string.ascii_uppercase
    lower = string.ascii_lowercase
    digits = string.digits
    special = string.punctuation

    # Ensure you have at least one of each type.
    password = [
        secrets.choice(upper),
        secrets.choice(lower),
        secrets.choice(digits),
        secrets.choice(special)
    ]

    # Fill in the rest.
    all_chars = upper + lower + digits + special
    password += [secrets.choice(all_chars) for _ in range(length - 4)]

    # To shuffle things up so they don't become predictable.
    secrets.SystemRandom().shuffle(password)

    return "".join(password)

print("Generated password:", generate_password())
1 resposta

Oi, Raul! Como vai?

Gostei bastante da sua escolha de utilizar secrets no lugar de random. Isso mostra que você já está pensando em práticas mais seguras e alinhadas com desenvolvimento voltado para segurança da informação. Também ficou muito interessante a validação usando ValueError para garantir o tamanho mínimo da senha e o uso do SystemRandom().shuffle() para evitar padrões previsíveis na ordem dos caracteres.

Uma dica interessante para o futuro é utilizar o método secrets.token_urlsafe() quando quiser gerar tokens seguros para autenticação ou recuperação de senha. Veja este exemplo:


import secrets

token = secrets.token_urlsafe(16)

print(token)

Esse código gera um token aleatório seguro utilizando caracteres apropriados para URLs e autenticação.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!