Um conceito anterior abordou o módulo random, que produz números pseudoaleatórios e ordenações de listas pseudoaleatórias.
O módulo secrets sobrepõe-se ao random em parte da sua funcionalidade, mas os dois módulos foram concebidos com prioridades muito diferentes.
random está otimizado para o alto desempenho em modelação e simulação, com uma geração de números pseudoaleatórios "suficientemente boa".secrets foi concebido para ser criptograficamente seguro em aplicações como o hashing de palavras-passe, a geração de tokens de segurança e a autenticação de contas.Encontras mais pormenores sobre a razão pela qual foi necessário acrescentar o módulo secrets no PEP 506.
O módulo secrets é relativamente pequeno e simples, com métodos para gerar números inteiros, bits, bytes ou tokens aleatórios, ou uma entrada aleatória de uma dada sequência.
Para usares o secrets, tens de fazer import primeiro:
>>> import secrets
# Returns n, where 0 <= n < 1000.
>>> secrets.randbelow(1000)
577
# 32-bit integers.
>>> secrets.randbits(32)
3028709440
>>> bin(secrets.randbits(32))
'0b11111000101100101111110011110100'
# Pick at random from a sequence.
>>> secrets.choice(['my', 'secret', 'thing'])
'thing'
# Generate a token made up of random hexadecimal digits.
>>> secrets.token_hex()
'f683d093ea9aa1f2607497c837cf11d7afaefa903c5805f94b64f068e2b9e621'
# Generate a URL-safe token of random alphanumeric characters.
>>> secrets.token_urlsafe(16)
'gkSUKRdiPDHqmImPi2HMnw'
Se estás a escrever aplicações sensíveis à segurança, vais certamente querer ler a documentação completa, que dá mais conselhos e exemplos.