SmartKitio

Programmation

Encodage et chiffrement : quelle différence ?

Les revues de sécurité trouvent encore des clés API « protégées » en Base64 et des mots de passe stockés en ciphertext réversible sans gestion de clés. L’encodage transforme la représentation pour que les données survivent à un canal ; le chiffrement transforme le sens pour que seuls les détenteurs de clé le récupèrent ; le hachage compresse les données en empreinte à sens unique. La compression réduit la taille. Chaque outil a son rôle — et aucun ne remplace les autres.

7 min de lecture · Mis à jour le 2026-10-04

Mains sur un clavier d’ordinateur portable avec une icône de cadenas évoquant la sécurité
Photo via Unsplash · Licence Unsplash

Quatre transformations que l’on mélange

Encodage, chiffrement, hachage et compression

EncodageChiffrementHachageCompression
Objectif principalReprésenter les données autrementConfidentialitéIntégrité / empreinteRéduire la taille
Secret requis ?NonOui (clé)Optionnel (poivre/sel pour mots de passe)Non
Réversible ?Oui, par quiconque connaît le schémaOui, avec la cléConçu pour être à sens uniqueOui, avec ou sans perte
ExempleBase64, encodage pourcent, hexAES-GCM, TLSSHA-256, bcryptgzip, JPEG
Mauvais usage« Cacher » un mot de passeIgnorer TLS parce que la charge est chiffrée une foisChiffrer puis hacher (choisir une pile)Compresser des secrets qu’on ne peut pas inspecter

Encodage : survivre au canal, pas le secret

L’encodage mappe octets ou texte vers un alphabet sûr pour le canal. Le courriel limitait autrefois les lignes à l’ASCII ; JSON et XML sont du texte ; les URL réservent des caractères comme ?, &, = et # à la structure. Les encodages sont des algorithmes publics — connaître le schéma suffit pour les inverser.

Base64

Base64 (RFC 4648) représente des données binaires avec 64 caractères ASCII imprimables plus du remplissage. La taille grossit d’environ un tiers, mais vous pouvez intégrer images, jetons ou ciphertext dans des chaînes JSON. Décoder est trivial avec n’importe quelle bibliothèque ou les outils base64-encoder et base64-decoder de SmartKitio — c’est pourquoi Base64 n’est pas un coffre.

text
Hello → SGVsbG8=
(JSON-safe string carrying the same bytes)

Encodage URL (pourcent)

Les URL se décomposent en schéma, autorité, chemin, requête et fragment. Les caractères réservés dans les valeurs de requête doivent être encodés en pourcent (%20 pour l’espace, %26 pour &) pour que les analyseurs ne malinterprètent pas la saisie utilisateur. L’url-encoder de SmartKitio applique les mêmes règles que les navigateurs pour construire les query strings — l’encodage concerne la structure, pas cacher des valeurs à l’utilisateur au clavier.

Hexadécimal

L’hex écrit chaque octet en deux nibbles (0-9, a-f). La taille double comme en Base64, mais sans ambiguïté de casse ou d’alphabet. On voit l’hex dans les hash de commits Git, les adresses MAC et les dumps de debug — pas parce que l’hex est sécurisé, mais parce qu’il se lit sans ambiguïté à voix haute.

Chiffrement : confidentialité avec des clés

Le chiffrement utilise une clé et un algorithme pour produire un ciphertext inutilisable sans matériel de clé autorisé. Les schémas symétriques comme AES emploient un secret partagé pour les données en volume ; les schémas asymétriques comme RSA ou ECDH négocient des clés ou signent des messages. Les API modernes préfèrent le chiffrement authentifié (par exemple AES-GCM) pour détecter la falsification, pas seulement du plaintext brouillé.

AES dans les applications

Les développeurs rencontrent AES pour chiffrer des fichiers au repos, des colonnes de base ou des charges de session. Un usage correct exige des IV ou nonces aléatoires, une rotation des clés, et surtout ne pas inventer son propre mode. Une clé AES statique dans une app mobile reste un secret embarqué côté client — les attaquants peuvent l’extraire.

TLS sur le fil

Transport Layer Security chiffre et authentifie HTTP, le courriel et bien d’autres protocoles entre clients et serveurs. TLS protège les octets en transit contre l’écoute passive et beaucoup d’attaques actives quand les certificats sont validés. Cela ne remplace pas le hachage des mots de passe au repos ni l’évitement de secrets dans des URL qui finissent dans les journaux.

Encodage vs chiffrement

Encodage (ex. Base64)

  1. 1

    Octets d’entrée

    Toute charge binaire ou texte

  2. 2

    Algorithme public

    Alphabet RFC 4648 + remplissage

  3. 3

    Texte encodé

    Sûr pour JSON, courriel ou canaux ASCII

  4. 4

    Tout le monde décode

    Pas de clé ; le schéma suffit

Chiffrement (ex. AES-GCM)

  1. 1

    Texte clair + clé

    Clé secrète depuis KMS, poignée TLS ou stockage scellé

  2. 2

    Chiffre + nonce

    IV/nonce aléatoire par message quand requis

  3. 3

    Ciphertext

    Sans signification sans matériel de clé

  4. 4

    Déchiffrement autorisé

    Détenteur de la clé (ou session TLS) récupère le plaintext

L’encodage change de costume ; le chiffrement verrouille la pièce.

Hachage : empreintes à sens unique

Les fonctions de hachage cryptographiques mappent une entrée arbitraire vers un digest de taille fixe. De petits changements d’entrée avalanche le résultat. SHA-256 sert au contrôle d’intégrité et au content addressing ; ce n’est pas à lui seul un algorithme de stockage de mots de passe, car les GPU peuvent brute-forcer des mots de passe courts sans ralentissement ni sel.

Hachage de mots de passe

  • Utilisez des hachages dédiés aux mots de passe : bcrypt, scrypt, Argon2 ou PBKDF2 avec des facteurs de travail élevés.
  • Stockez un sel unique par utilisateur pour que les tables arc-en-ciel échouent.
  • Poivre optionnel (secret côté serveur) pour une défense en profondeur bien gérée.
  • Ne chiffrez jamais les mots de passe de façon réversible pour la vérification à la connexion — comparez les digests avec une égalité en temps constant.

L’outil sha256-hash de SmartKitio illustre SHA-256 pour les sommes de contrôle et l’apprentissage. Pour un vrai stockage de mots de passe, suivez OWASP et les bibliothèques de plateforme — pas un seul passage de hachage rapide.

La compression est un autre axe

gzip et Brotli réduisent les réponses HTTP. JPEG et WebP perdent de l’information pour les photos. La compression n’est ni encodage pour la sécurité du transport ni chiffrement. Les secrets compressés fuient encore des motifs de longueur dans certains modèles de menace, et il ne faut jamais compresser puis chiffrer naïvement sans comprendre les attaques de type CRIME/BREACH sur la compression HTTP.

Idées reçues qui survivent aux audits

  1. « On met la clé API en Base64, donc c’est sécurisé. » — N’importe qui peut décoder.
  2. « On a chiffré la base, donc TLS ne compte pas. » — Données en mouvement et au repos sont des contrôles distincts.
  3. « On a haché une fois avec SHA-256. » — Les hachages rapides suffisent mal pour des mots de passe à faible entropie.
  4. « L’encodage URL cache le mot de passe dans la query string. » — Il reste dans l’historique, les journaux et les en-têtes Referer.
  5. « Le JWT est chiffré parce qu’il a l’air brouillé. » — Les JWT sont souvent seulement signés (JWS) ou utilisent JWE quand le chiffrement est requis.

Exemples travaillés

Guide de décision rapide

Vous devez…Utiliser…Pas…
Mettre du binaire dans du JSONEncodage Base64AES sans histoire de clé
Construire une query string proprementEncodage pourcentChiffrement de chaque paramètre
Vérifier l’intégrité d’un fichierComparaison de hash SHA-256Encodage réversible
Protéger le trafic HTTPTLS (HTTPS)Base64 sur le corps
Stocker les mots de passe de connexionArgon2/bcrypt + selMD5 ou SHA-256 seul

Les outils Base64 et URL de SmartKitio s’exécutent dans le navigateur pour des transformations rapides ; les guides base64-encoding-vs-encryption précisent quand ces transformations sont appropriées. Servez-vous-en pour apprendre et déboguer — pas pour « sécuriser » des secrets.

Normes et recommandations

  1. RFC 4648 — Base64 encodings
  2. RFC 3986 — URI generic syntax (percent-encoding)
  3. NIST FIPS 197 — AES
  4. OWASP Password Storage Cheat Sheet

Articles associés