Un concepto anterior trató el módulo random, que produce números pseudoaleatorios y ordenamientos pseudoaleatorios de listas.
El módulo secrets se superpone con random en parte de su funcionalidad, pero ambos módulos están diseñados con prioridades muy diferentes.
random está optimizado para un alto rendimiento en modelado y simulación, con una generación de números pseudoaleatorios «suficientemente buena».secrets está diseñado para ser criptográficamente seguro en aplicaciones como el hash de contraseñas, la generación de tokens de seguridad y la autenticación de cuentas.En PEP 506 se dan más detalles sobre por qué fue necesaria la incorporación del módulo secrets.
El módulo secrets es relativamente pequeño y sencillo, con métodos para generar números enteros aleatorios, bits, bytes, tokens o una entrada aleatoria de una secuencia dada.
Para usar secrets, primero debes hacer import de él:
>>> 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'
Si escribes aplicaciones sensibles a la seguridad, sin duda querrás leer la documentación completa, que ofrece más consejos y ejemplos.