Retour au cours

random et secrets : aléatoire et usages sûrs

python offre random pour les usages généraux, et secrets pour la sécurité (mots de passe, jetons).

objectifs

  • générer des nombres ou choix aléatoires
  • mélanger des séquences
  • générer des secrets sûrs

explication détaillée

  • random.random() : float 0.0–1.0
  • random.randint(a,b) : int inclusif
  • random.choice(seq), random.shuffle(seq)
  • secrets.token_hex(n), secrets.choice(seq) pour la crypto

exemples exécutables

import random, secrets

print(random.random())
print(random.randint(1, 6))
print(random.choice(["pierre", "papier", "ciseaux"]))

deck = list(range(1, 11))
random.shuffle(deck)
print(deck)

# mot de passe sûr
pwd = secrets.token_urlsafe(12)
print(pwd)

bonnes pratiques

  • pour la sécurité, utiliser secrets et pas random
  • fixer la seed (random.seed) uniquement pour reproduire des résultats
  • ne pas exposer les valeurs générées pour la sécurité

pièges courants

  • croire que random est sûr pour la crypto
  • oublier que shuffle modifie la liste en place

exercices

  1. simuler un lancer de dé 100 fois et compter les résultats.
  2. mélanger une liste de noms.
  3. générer un jeton hexadécimal de 32 octets.