Storing passwords safely · Stocker les mots de passe en toute sécurité
The big rule: never store plain passwords
- If a website stores your password as plain text and gets hacked, every password is stolen instantly.
- Instead, sites store a hash — a scrambled fingerprint that cannot be reversed back into the password.
La grande règle : ne jamais stocker des mots de passe en clair
- Si un site stocke votre mot de passe en texte brut et se fait pirater, tous les mots de passe sont volés instantanément.
- Au lieu de cela, les sites stockent un hachage — une empreinte chiffrée qui ne peut pas être dérivée vers le mot de passe original.
What is a hash?
- A hash function turns any input into a fixed-length string. The same input always gives the same hash.
- It is one-way: easy to compute forwards, practically impossible to reverse.
- When you log in, the site hashes what you typed and compares it to the stored hash — it only ever stores the hash, never your actual password.
Qu'est-ce qu'un hachage ?
- Une fonction de hachage transforme n'importe quelle entrée en une chaîne de longueur fixe. La même entrée donne toujours le même hachage.
- C'est un sens : facile à calculer dans le sens direct, pratiquement impossible à inverser.
- Lors de votre connexion, le site hache ce que vous avez tapé et le compare au hachage stocké — il ne stocke jamais que le hachage, jamais votre vrai mot de passe.
import hashlib
print(hashlib.sha256(b"hello").hexdigest())
Add salt
- If two users pick the same password, their hashes match — a clue for attackers.
- A salt is a random string added before hashing, so identical passwords get different hashes.
- It also defeats pre-computed "rainbow table" attacks. Always salt.
Ajouter du sel
- Si deux utilisateurs choisissent le même mot de passe, leurs hachages correspondent — un indice pour les attaquants.
- Un sel est une chaîne aléatoire ajoutée avant le hachage, afin que les mots de passe identiques obtiennent des hachages différents.
- Cela empêche également les attaques par tables arc-en-ciel précalculées. Toujours saler.
Your turn
- Hash
salt + passwordwith SHA-256. The check confirms you produced the correct 64-character digest.
Covers: A-Level 6.1, 17.1 (encryption/hashing).
À vous
- Hachez
salt + passwordavec SHA-256. La vérification confirme que vous avez produit le digest correct de 64 caractères.
Couvre : A-Level 6.1, 17.1 (chiffrement/hachage).
Common mistakes
- Never store passwords in plain text.
- Store a salted hash, not the password itself.
Erreurs courantes
- Ne jamais stocker des mots de passe en texte brut.
- Stockez un hachage salé, pas le mot de passe lui-même.
Store the hash, not the password · Stockez le hash, pas le mot de passe
Sites store a hash; a tiny change gives a totally different digest. · Les sites stockent un hash ; une petite modification donne un digest totalement différent.
Never store a plain password — store its hash. Using hashlib, hash the salt + password with SHA-256 and put the hex digest in a variable called digest. · Ne jamais stocker un mot de passe en clair — stockez son hash. En utilisant hashlib, hachez le sel + mot de passe avec SHA-256 et mettez le digest hexadécimal dans une variable appelée digest.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Now be the login system. The database holds a salt and a stored digest — never the password. Hash salt + attempt with SHA-256 and print welcome if it matches stored, else denied. · Maintenant soyez le système de connexion. La base de données contient un salt et un stored digest — jamais le mot de passe. Hachez salt + attempt avec SHA-256 et imprimez welcome si cela correspond à stored, sinon denied.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.