Outil de chiffrement AES — GCM, CBC et CTR
Chiffrement AES en ligne gratuit — AES-128/192/256, GCM/CBC/CTR, phrase secrète (PBKDF2) ou clé brute. 100 % dans votre navigateur ; rien n'est envoyé.
Options avancées
Ne réutilisez jamais un IV avec la même clé. Laissez vide pour générer un IV aléatoire sécurisé.
Qu'est-ce que le chiffrement AES ?
L'AES (Advanced Encryption Standard) est un chiffrement symétrique par blocs standardisé par le NIST dans la FIPS 197 en 2001, basé sur la conception Rijndael de Joan Daemen et Vincent Rijmen. Il chiffre les données par blocs fixes de 128 bits à l'aide d'une clé de 128, 192 ou 256 bits, et la même clé sert à la fois à chiffrer et à déchiffrer. C'est le cheval de bataille de la cryptographie moderne, protégeant tout, du trafic HTTPS au chiffrement de disque.
Un chiffrement par blocs brut ne brouille qu'un seul bloc de 16 octets, donc l'AES s'exécute toujours à l'intérieur d'un mode opératoire qui enchaîne les blocs entre eux. Cet outil en propose trois, tous fournis nativement par l'API Web Crypto du navigateur : GCM, CBC et CTR. GCM (Galois/Counter Mode, NIST SP 800-38D) est la valeur par défaut recommandée car il est authentifié — il produit un tag d'authentification de 128 bits en plus du texte chiffré, si bien que toute altération est détectée au déchiffrement. CBC et CTR n'offrent que la confidentialité ; à eux seuls, ils ne peuvent pas indiquer si le texte chiffré a été altéré, ce qui explique pourquoi TLS 1.3 (RFC 8446) a abandonné toutes les suites de chiffrement CBC au profit de modes authentifiés comme GCM.
Vous remarquerez qu'il n'y a pas de mode ECB ici, et c'est délibéré. ECB chiffre chaque bloc de texte en clair identique vers le même bloc de texte chiffré, si bien que la structure à grande échelle transparaît directement — la célèbre image du « pingouin ECB » reste visiblement un pingouin après chiffrement. L'API Web Crypto omet ECB pour exactement cette raison (elle n'implémente que AES-CBC, AES-CTR et AES-GCM), et nous faisons de même. Si vous devez interopérer avec un système existant qui utilisait ECB, considérez cela comme une raison de le migrer, pas de reproduire cette faiblesse.
Comme la plupart des gens saisissent une phrase secrète plutôt qu'une clé aléatoire de 32 octets, l'outil dérive la clé AES à partir de votre phrase secrète avec PBKDF2-HMAC-SHA256 à 600 000 itérations et un sel aléatoire de 16 octets, conformément aux recommandations actuelles d'OWASP sur le stockage des mots de passe (et à la NIST SP 800-132, qui exige un sel d'au moins 128 bits). Cela rend lente la force brute contre une phrase secrète faible, mais ce n'est pas magique : c'est un outil pour apprendre les modes, déboguer du texte chiffré et gérer des données personnelles ponctuelles — pas pour protéger des secrets de production, qui relèvent d'un système de gestion de clés dédié. Pour une phrase secrète forte, générez-en une avec notre générateur de mot de passe aléatoire ; pour une vraie clé aléatoire, utilisez le générateur de clé secrète.
// AES-256-GCM with a passphrase (PBKDF2-HMAC-SHA256, 600,000 iterations).
// Identical code runs in the browser and in Node.js 20+ via Web Crypto.
async function aesGcmEncrypt(plaintext, passphrase) {
const enc = new TextEncoder();
const salt = crypto.getRandomValues(new Uint8Array(16));
const iv = crypto.getRandomValues(new Uint8Array(12));
const baseKey = await crypto.subtle.importKey(
'raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 600000, hash: 'SHA-256' },
baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
const ct = new Uint8Array(await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, enc.encode(plaintext)));
const packed = new Uint8Array([...salt, ...iv, ...ct]); // salt(16) | iv(12) | ct+tag
return btoa(String.fromCharCode(...packed)); // self-contained Base64
} Fonctionnalités clés
Chiffrement authentifié GCM par défaut
GCM produit le texte chiffré accompagné d'un tag d'authentification de 128 bits, si bien que le déchiffrement échoue bruyamment si un seul octet a été modifié. CBC et CTR sont à un clic quand vous devez interopérer avec eux.
Texte chiffré autonome
Le mode Phrase secrète regroupe le sel aléatoire, l'IV et le tag dans une seule chaîne Base64, si bien que la personne qui déchiffre n'a besoin que de la phrase secrète — il n'y a pas de champs séparés à copier ou à perdre.
Phrase secrète ou clé brute
Saisissez une phrase secrète (étirée avec PBKDF2-HMAC-SHA256, 600 000 itérations) ou collez une clé exacte de 128/192/256 bits en hexadécimal ou en Base64, avec un badge de nombre d'octets en direct qui confirme la longueur.
Sortie compatible OpenSSL
Activez le mode OpenSSL pour produire le format Salted__ que lisent la commande openssl enc et CryptoJS, avec la commande CLI équivalente affichée en direct pour que vous puissiez la reproduire dans un terminal.
100 % dans votre navigateur
Chaque octet est chiffré localement avec l'API Web Crypto. Ouvrez votre onglet Réseau et vous ne verrez rien quitter la page — cela fonctionne même hors ligne.
Sortie Base64 ou Hex
Copiez le résultat dans l'encodage qu'attend votre système cible, et inspectez les longueurs du sel, de l'IV, du texte chiffré et du tag dans le bandeau de détail des segments.
Exemples de chiffrement AES
GCM + phrase secrète (autonome, non déterministe)
The quick brown fox jumps over the lazy dog.
sel (16 o) + IV (12 o) + texte chiffré + tag (16 o), encodé en Base64 — une valeur différente à chaque exécution
Avec Mode GCM, Taille de clé 256, Type de clé Phrase secrète et la phrase secrète hunter2, cette phrase se chiffre en une seule chaîne Base64 autonome. Chiffrez-la deux fois et vous obtiendrez deux résultats complètement différents — c'est voulu. Le mode Phrase secrète génère un nouveau sel de 16 octets et un nouvel IV de 12 octets à chaque chiffrement, si bien qu'un texte en clair identique ne produit jamais un texte chiffré identique, et un observateur ne peut pas savoir que deux messages sont les mêmes. Le bandeau de segments sous la sortie montre la disposition exacte : le sel, puis l'IV, puis le texte chiffré avec son tag GCM de 128 bits ajouté à la fin. Pour déchiffrer, le destinataire n'a besoin que de la phrase secrète et du même mode et de la même taille de clé — le sel, l'IV et le tag voyagent tous à l'intérieur de la chaîne.
Sortie compatible OpenSSL (CBC + phrase secrète)
Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Activez le mode compatible OpenSSL avec Mode CBC, Type de clé Phrase secrète, la phrase secrète correct-horse, KDF PBKDF2 et 10 000 itérations. L'outil produit alors le format Salted__ d'OpenSSL : du Base64 qui commence toujours par U2FsdGVkX1, l'encodage Base64 de l'en-tête Salted__ de 8 octets. Comme un nouveau sel aléatoire de 8 octets est généré à chaque fois, la chaîne exacte change à chaque exécution, mais chacune se déchiffre en ligne de commande avec : echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — ce qui affiche Attack at dawn!. Choisissez EVP-MD5 plutôt que PBKDF2 pour correspondre à CryptoJS ou à OpenSSL 1.0.2 et antérieur. Notez que openssl enc ne prend pas en charge GCM, donc le mode OpenSSL est réservé à CBC.
Comment chiffrer du texte avec AES
- 1
Choisissez un mode et une taille de clé
Laissez Mode sur GCM (recommandé) et Taille de clé sur 256 pour le choix par défaut le plus solide et raisonnable. Passez à CBC ou CTR uniquement si un système que vous ciblez l'exige.
- 2
Choisissez une phrase secrète ou une clé brute
Laissez Type de clé sur Phrase secrète et saisissez une phrase secrète forte, ou passez à Clé brute et collez une clé exacte de 128/192/256 bits en hexadécimal ou en Base64. Le badge de nombre d'octets confirme si votre clé brute a une longueur valide.
- 3
Saisissez le texte à chiffrer
Tapez ou collez votre texte en clair. Le chiffrement s'exécute automatiquement au fil de la saisie, entièrement dans votre navigateur — aucun aller-retour par bouton, aucun envoi.
- 4
Copiez le texte chiffré autonome
Le résultat Base64 à droite contient déjà le sel, l'IV et le tag d'authentification. Utilisez le bandeau de segments pour voir la disposition des octets, puis cliquez sur Copier. Passez l'encodage de sortie en Hex si votre système cible l'attend.
- 5
Déchiffrez-le quand vous en avez besoin
Donnez le texte chiffré, la phrase secrète, et le même mode et la même taille de clé au destinataire, ou ouvrez la page de déchiffrement AES pour l'inverser vous-même.
Erreurs courantes de chiffrement AES
Confondre une phrase secrète avec une clé brute
Une clé brute doit faire exactement 16, 24 ou 32 octets de données aléatoires (saisis en hexadécimal ou en Base64) ; une phrase secrète est un texte quelconque et doit d'abord être étirée par un KDF. Choisir Clé brute et coller une phrase secrète humaine produit soit une erreur de longueur, soit une clé faible.
Key type: Raw key Key (hex): correct horse battery staple (not hex, not 32 bytes)
Key type: Passphrase Passphrase: correct horse battery staple (stretched with PBKDF2)
Réutiliser un IV avec la même clé
L'IV doit être unique par message sous une clé donnée. Le réutiliser est fatal pour GCM (cela peut divulguer la clé d'authentification) et brise la confidentialité pour CBC et CTR. Laissez l'outil générer un nouvel IV aléatoire à chaque fois.
// same key, same IV for two messages encrypt(key, iv, a); encrypt(key, iv, b);
// fresh random IV each time (the default) encrypt(key, randomIV(), a);
Perdre le sel, l'IV ou le tag
Si vous ne copiez que les octets du texte chiffré et laissez de côté le sel/IV préfixé — ou le tag GCM ajouté à la fin — les données ne pourront jamais être déchiffrées. Gardez toute la chaîne autonome, pas seulement son milieu.
stored = ciphertext // salt + IV + tag thrown away
stored = salt + iv + ciphertext + tag // the full Base64 string
S'attendre à ce que la sortie GCM soit identique à chaque exécution
GCM (et le mode Phrase secrète en général) utilise un sel et un IV aléatoires, si bien que le même texte se chiffre en une chaîne Base64 différente à chaque fois. C'est une fonctionnalité de sécurité, pas un bug — cela signifie qu'un espion ne peut pas savoir que deux textes chiffrés chiffrent le même message.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
assert(decrypt(encrypt(msg)) === msg) // this is what must hold
Ce que vous pouvez faire avec le chiffrement AES
- Apprendre comment se comportent les modes AES
- Basculez entre GCM, CBC et CTR avec la même entrée pour voir comment l'authentification, la longueur de l'IV et la taille du texte chiffré changent. Une façon concrète de comprendre ce que spécifie réellement la NIST SP 800-38D.
- Produire un texte chiffré qu'un autre système peut lire
- Générez une sortie au format Salted__ d'OpenSSL (ou sous forme de clé brute plus IV) pour qu'un backend, un script ou un collègue utilisant openssl ou une bibliothèque de chiffrement puisse la déchiffrer sans friction.
- Chiffrer une courte note ou un extrait
- Protégez un texte personnel ponctuel — une phrase de récupération que vous déplacez entre appareils, un extrait dans un ticket de support — avec une phrase secrète que vous seul connaissez. Pas pour des secrets réglementés ou de production.
- Prototyper un format de chiffrement
- Fixez ici la disposition sel/IV/tag et les réglages de KDF avant d'écrire le code, en utilisant le détail des segments pour confirmer l'ordre et les longueurs des octets.
- Générer des vecteurs de test
- Créez un texte chiffré connu avec une phrase secrète et un mode fixes pour alimenter vos propres tests de déchiffrement, puis vérifiez l'aller-retour sur la page de déchiffrement AES.
Modes AES et dérivation de clé
- GCM (Galois/Counter Mode) — authentifié, recommandé
- Confidentialité plus un tag d'authentification de 128 bits (NIST SP 800-38D). Il utilise un IV de 96 bits (12 octets), généré aléatoirement à chaque chiffrement, et le chiffrement comme le déchiffrement se parallélisent bien. La seule règle à ne jamais enfreindre : ne jamais réutiliser un IV avec la même clé. La SP 800-38D limite une même clé à environ 2^32 IV générés aléatoirement, et une répétition fuite le XOR de deux textes en clair et peut même exposer la clé d'authentification qui protège le tag. Le meilleur choix pour presque tout.
- CBC (Cipher Block Chaining) — confidentialité seulement
- Chaque bloc est XORé avec le bloc de texte chiffré précédent, à l'aide d'un IV aléatoire de 16 octets. Il n'a pas d'authentification intégrée, il doit donc être associé à un MAC séparé — chiffrer-puis-MAC, par exemple avec notre générateur HMAC — et il est historiquement sujet aux attaques par oracle de padding (Vaudenay, EUROCRYPT 2002). Proposé ici pour l'interopérabilité avec OpenSSL et les systèmes plus anciens.
- CTR (Counter) — confidentialité seulement, façon flux
- Transforme l'AES en chiffrement de flux en chiffrant un compteur, si bien que n'importe quelle longueur d'octets fonctionne sans padding et que les blocs se parallélisent librement. Comme CBC, il n'offre aucune intégrité à lui seul, et réutiliser le compteur/IV sous une même clé est catastrophique. Utile quand vous avez besoin d'un accès aléatoire ou d'une sémantique de flux.
- ECB — non proposé (par conception)
- Electronic Codebook chiffre chaque bloc indépendamment, si bien que des blocs de texte en clair identiques produisent un texte chiffré identique et que les motifs transparaissent — le célèbre « pingouin ECB ». L'API Web Crypto ne l'implémente délibérément pas, et nous non plus. Si un système existant exige ECB, considérez cela comme un bug à corriger plutôt qu'un format à reproduire.
- Dérivation de clé : 600 000 vs 10 000 vs 1 itération
- Dans le mode Phrase secrète par défaut, cet outil utilise PBKDF2-HMAC-SHA256 à 600 000 itérations (le même hachage SHA-256 appliqué des centaines de milliers de fois) avec un sel de 16 octets, selon OWASP. En mode compatible OpenSSL, PBKDF2 utilise par défaut seulement 10 000 itérations (la valeur par défaut d'openssl enc), et l'ancien KDF EVP_BytesToKey utilisé par CryptoJS et les anciennes versions d'OpenSSL n'effectue qu'une seule passe MD5 — des ordres de grandeur plus faible. Plus d'itérations signifient une force brute plus lente par essai, ce qui explique pourquoi la valeur par défaut moderne est tellement plus élevée. Argon2 et scrypt sont encore plus robustes, mais ne font pas partie de Web Crypto, donc ils sont hors du champ de cet outil ; pour le stockage de mots de passe, suivez OWASP et préférez Argon2id.
Bonnes pratiques de chiffrement AES
- Préférez GCM sauf si un système impose autre chose
- Le chiffrement authentifié détecte les altérations que CBC et CTR laissent passer silencieusement. Ne descendez vers CBC ou CTR que pour l'interopérabilité, et ajoutez un MAC si vous le faites.
- Utilisez un nouvel IV aléatoire pour chaque message
- L'outil le fait automatiquement. Si vous remplacez l'IV manuellement, ne réutilisez jamais un IV avec la même clé — pour GCM, une répétition est catastrophique, et pour CBC, cela brise la sécurité sémantique.
- Choisissez des phrases secrètes fortes et de vraies clés aléatoires
- PBKDF2 ralentit la force brute mais ne peut pas sauver une phrase secrète faible. Générez une phrase secrète longue avec le générateur de mot de passe, ou une vraie clé aléatoire avec le générateur de clé secrète.
- Gardez le sel, l'IV et le tag avec le texte chiffré
- Ils ne sont pas secrets, mais le déchiffrement échoue sans eux. Le format autonome de cet outil regroupe les trois ; si vous utilisez le mode clé brute en texte chiffré nu, copiez l'IV séparément et stockez-le à côté du texte chiffré.
- Ne chiffrez aucun secret de production ou réglementé dans un outil en ligne
- Même entièrement côté client, un outil de navigateur est fait pour l'apprentissage, le débogage et les usages personnels ponctuels. Les vrais secrets relèvent d'un système de gestion de clés éprouvé, avec une gestion et une rotation des clés auditées. L'AES-256 en lui-même est robuste — approuvé par la suite CNSA 2.0 de la NSA pour les informations jusqu'au niveau TOP SECRET — et les failles réelles viennent d'erreurs d'implémentation, pas du chiffrement.
FAQ sur le chiffrement AES
Est-il sûr de chiffrer du texte en ligne ?
Peut-on déchiffrer l'AES sans la clé ?
GCM ou CBC — quel mode utiliser ?
AES-128 ou AES-256 — le 256 en vaut-il la peine ?
Mes données sont-elles envoyées quand je chiffre ici ?
Quelle est la différence entre une phrase secrète et une clé ?
Puis-je chiffrer pour qu'OpenSSL ou CryptoJS puisse déchiffrer ?
Outils connexes
Voir tous les outils →Outil de déchiffrement AES — compatible OpenSSL et CryptoJS
Outils de sécurité
Déchiffrez de l'AES en ligne — GCM/CBC/CTR, phrase secrète ou clé brute, détection automatique du format OpenSSL et CryptoJS « U2FsdGVkX1 ». 100 % dans le navigateur, les clés ne quittent jamais la page.
Générateur et vérificateur de hachage Bcrypt
Outils de sécurité
Générez et vérifiez des hachages bcrypt en ligne — coût ajustable, préfixes $2b$/$2a$/$2y$. 100 % dans votre navigateur ; mot de passe jamais envoyé.
Générateur HMAC & vérificateur de signature
Outils de sécurité
Générateur et vérificateur HMAC en ligne gratuit. Calculez HMAC-SHA256/SHA1/SHA384/SHA512 avec des clés en texte, hex ou Base64 et une sortie Hex/Base64/Base64URL. 100 % dans votre navigateur — les clés ne quittent jamais la page.
Décodeur JWT
Outils de sécurité
Décodez des jetons JWT en ligne avec notre décodeur JWT gratuit. Inspectez en-tête, charge utile, signature, expiration et revendications. 100 % navigateur — votre jeton ne quitte jamais votre appareil. Sans inscription ni suivi.
Encodeur & Générateur JWT
Outils de sécurité
Générateur & encodeur JWT gratuit en ligne. Construisez l'en-tête et la charge utile, signez avec HS256, RS256 ou ES256 instantanément. 100 % navigateur — votre secret et votre clé ne quittent jamais votre appareil.
Générateur de secret JWT gratuit — HS256/384/512
Outils de sécurité
Générez un secret JWT robuste pour HS256/384/512 — 100 % dans votre navigateur, jamais envoyé. base64url, base64 ou hex ; à copier pour .env.