Un concepto anterior trataba el módulo random, que produce números pseudoaleatorios y ordenaciones pseudoaleatorias de arrays.
El módulo secrets se solapa 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 el modelado y la 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 ofrecen más detalles sobre por qué resultó necesaria la incorporación del módulo secrets.
El módulo secrets es relativamente pequeño y sencillo, con métodos para generar aleatoriamente números enteros, bits, bytes y tokens, o para elegir una entrada aleatoria de una secuencia dada.
Para usar secrets, primero tienes que 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 estás escribiendo aplicaciones sensibles a la seguridad, sin duda querrás leer la documentación completa, que ofrece más consejos y ejemplos.