Un concept précédent a présenté le module random, qui produit des nombres pseudo-aléatoires et des ordres pseudo-aléatoires de tableaux.
Le module secrets recoupe random dans une partie de ses fonctionnalités, mais les deux modules sont conçus selon des priorités très différentes.
random est optimisé pour la performance dans la modélisation et la simulation, avec une génération de nombres pseudo-aléatoires « suffisamment bonne ».secrets est conçu pour être cryptographiquement sûr, pour des applications comme le hachage de mots de passe, la génération de jetons de sécurité et l'authentification de comptes.D'autres détails sur les raisons pour lesquelles l'ajout du module secrets s'est avéré nécessaire sont donnés dans la PEP 506.
Le module secrets est relativement petit et simple, avec des méthodes pour générer des entiers, des bits, des octets ou des jetons aléatoires, ou encore une entrée aléatoire d'une séquence donnée.
Pour utiliser secrets, il faut d'abord l'importer avec import :
>>> 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 tu écris des applications sensibles à la sécurité, tu voudras certainement lire la documentation complète, qui donne d'autres conseils et exemples.