Chiffrer, hacher, encoder : trois choses qu'on confond tout le temps
9 min · Débutant · 7 août 2026
Trois mots, trois propriétés différentes
Ces trois termes reviennent partout dès qu’on parle de sécurité, et sont presque systématiquement confondus. Chacun répond pourtant à un besoin précis, avec une propriété qui les distingue :
Chiffrement : reversible AVEC la bonne cle -> confidentialite
Hachage : irreversible, par construction -> integrite / verification
Encodage : reversible SANS aucune cle -> format de transport L’erreur la plus fréquente : confondre encodage et sécurité
Le Base64 (souvent croisé dans une URL ou un en-tête HTTP) a l’air « chiffré » aux yeux d’un débutant : illisible au premier coup d’œil, composé de lettres et de chiffres. Il ne protège pourtant absolument rien : aucune clé n’est nécessaire pour revenir à la valeur d’origine.
Attention
Stocker un mot de passe encodé en Base64 plutôt qu’en clair n’apporte aucune protection réelle : n’importe qui peut le décoder en une fraction de seconde, sans outil particulier.
La démonstration
import base64, hashlib
message = "mot de passe"
# Encodage : reversible par n'importe qui, sans aucun secret
encode = base64.b64encode(message.encode()).decode()
decode = base64.b64decode(encode).decode()
print("Encode :", encode)
print("Decode :", decode)
# Hachage : irreversible par construction, aucune fonction "dehacher" n'existe
empreinte = hashlib.sha256(message.encode()).hexdigest()
print("Empreinte SHA-256 :", empreinte)
print("Retrouver le message a partir de l'empreinte : impossible directement") Le décodage Base64 ne demande rien de plus que l’algorithme public. Retrouver le message à partir de son empreinte SHA-256, en revanche, n’a pas de solution directe : le chapitre 3 de ce cours montre les méthodes réellement utilisées pour y arriver malgré tout.