Outil de déchiffrement AES — compatible OpenSSL et CryptoJS
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.
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é.
Comment fonctionne le déchiffrement AES
Le déchiffrement AES est l'inverse exact du chiffrement : la même clé symétrique qui a brouillé les données exécute les tours du chiffrement en sens inverse pour récupérer les octets d'origine. Comme l'AES est symétrique, il n'existe pas de « clé de déchiffrement » séparée — vous devez fournir la clé ou la phrase secrète, le mode et l'IV identiques à ceux utilisés pour chiffrer. Obtenez les bons paramètres et le texte en clair revient octet pour octet ; trompez-vous sur un seul et vous obtenez une erreur ou des données incohérentes.
Pour déchiffrer correctement, quatre éléments doivent correspondre exactement au chiffrement : la clé (ou la phrase secrète plus ses réglages de dérivation de clé), le mode opératoire (GCM, CBC ou CTR), l'IV ou le nonce, et — pour GCM — le tag d'authentification. Si l'un d'eux manque, le résultat est soit une erreur nette (un échec d'authentification GCM, un échec de padding CBC), soit des données incohérentes silencieuses (CTR, ou CBC avec le mauvais IV). Cet outil extrait pour vous le sel, l'IV et le tag du texte chiffré quand ils y sont intégrés, et diagnostique l'échec quand quelque chose ne correspond pas.
Le texte chiffré se présente sous quelques formes différentes, et cet outil en comprend trois. Le format 1 est notre disposition autonome par phrase secrète : un sel de 16 octets, puis l'IV, puis le texte chiffré (avec le tag GCM ajouté à la fin en mode GCM) — déchiffrez-le avec la seule phrase secrète. Le format 2 est la disposition en clé brute : l'IV préfixé au texte chiffré, ou un texte chiffré « nu » où vous fournissez l'IV séparément. Le format 3 est la disposition OpenSSL, produite par la commande openssl enc et par CryptoJS.
Ce format OpenSSL mérite d'être reconnu au premier coup d'œil. Il commence par les 8 octets ASCII Salted__, suivis d'un sel de 8 octets puis du texte chiffré, et quand le tout est encodé en Base64, ces premiers octets ressortent toujours comme le préfixe U2FsdGVkX1. Donc si un texte chiffré qu'on vous a remis commence par U2FsdGVkX1, il a presque certainement été produit par openssl enc ou un appel CryptoJS AES.encrypt(text, passphrase). CryptoJS dérive sa clé avec l'ancienne fonction EVP_BytesToKey utilisant une seule passe MD5, tandis qu'openssl moderne utilise PBKDF2 — c'est pourquoi choisir la bonne fonction de dérivation de clé est l'enjeu central pour déchiffrer ces textes. Si votre entrée est en Base64 et que vous voulez simplement voir les octets bruts, notre décodeur Base64 vous les montrera. Pour créer un texte chiffré dans ces formats, utilisez l'outil de chiffrement AES.
// AES-256-GCM decrypt 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 aesGcmDecrypt(base64, passphrase) {
const enc = new TextEncoder();
const packed = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
const salt = packed.slice(0, 16), iv = packed.slice(16, 28); // salt(16) | iv(12)
const ct = packed.slice(28); // ciphertext + tag
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, ['decrypt']);
const plain = await crypto.subtle.decrypt(
{ name: 'AES-GCM', iv }, key, ct); // throws if the tag fails
return new TextDecoder().decode(plain); // recovered plaintext
} Fonctionnalités clés
Détecte automatiquement la sortie OpenSSL et CryptoJS
Collez un texte chiffré commençant par U2FsdGVkX1 et l'outil reconnaît le format Salted__ et propose un basculement en un clic vers le flux de déchiffrement correspondant, si bien que vous ne luttez jamais contre une erreur sans issue.
Trois fonctions de dérivation de clé
Déchiffrez à travers toutes les générations du format openssl enc : PBKDF2 avec un nombre d'itérations personnalisé, EVP_BytesToKey avec SHA-256, ou l'ancienne passe unique MD5 qu'utilise CryptoJS.
Explique pourquoi le déchiffrement a échoué
Au lieu d'une erreur générique, vous obtenez un diagnostic : mauvaise clé contre mauvais IV, un échec d'authentification GCM, une erreur de padding CBC, une pollution du base64, ou « ceci ressemble à un texte chiffré de l'ère MD5, essayez EVP-MD5 ».
Commande openssl équivalente affichée en direct
Voyez la commande exacte openssl enc -d qui reproduit le déchiffrement en ligne de commande, nombre d'itérations inclus, pour que vous puissiez vérifier le résultat en dehors du navigateur.
Phrase secrète ou clé brute, GCM/CBC/CTR
Gère le texte chiffré autonome par phrase secrète, le texte chiffré en clé brute avec un IV préfixé ou fourni séparément, et les trois modes Web Crypto.
100 % dans votre navigateur
Le texte chiffré et les clés sont traités localement avec l'API Web Crypto et ne sont jamais envoyés — vous pouvez le vérifier avec l'onglet Réseau ou en passant hors ligne.
Exemples de déchiffrement AES
Déchiffrer un texte chiffré autonome par phrase secrète (GCM)
sel(16) ‖ iv(12) ‖ texte chiffré ‖ tag(16), Base64 — depuis la page de chiffrement
The quick brown fox jumps over the lazy dog.
Ceci est l'inverse de l'exemple GCM de la page de chiffrement. Prenez la chaîne Base64 autonome qu'elle a produite pour la phrase secrète hunter2, collez-la ici avec Mode GCM, Taille de clé 256, Type de clé Phrase secrète et la même phrase secrète hunter2, et la phrase d'origine revient. Vous ne saisissez pas de sel ni d'IV séparément — l'outil lit le sel de 16 octets et l'IV de 12 octets au début de la chaîne, dérive la clé avec PBKDF2-HMAC-SHA256 (600 000 itérations), et vérifie le tag GCM de 128 bits ajouté à la fin avant de renvoyer le moindre texte. Cliquez sur Charger l'exemple sur la page de chiffrement pour générer une nouvelle chaîne, puis déchiffrez-la ici.
Déchiffrer une vraie sortie OpenSSL / PBKDF2
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!
Ceci est une vraie sortie d'openssl enc. Collez-la, passez en mode OpenSSL (Mode CBC, Type de clé Phrase secrète), saisissez la phrase secrète correct-horse, choisissez la fonction de dérivation de clé PBKDF2, et réglez les itérations à 10 000 — le texte en clair est Attack at dawn!. Le préfixe U2FsdGVkX1 indique à l'outil qu'il s'agissait du format Salted__, et le sel de 8 octets se trouve juste après cet en-tête à l'intérieur du Base64. Vous pouvez reproduire le déchiffrement exact en ligne de commande : echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. Si un texte chiffré similaire échoue avec PBKDF2, il a probablement été produit par CryptoJS — passez le KDF à EVP-MD5 et réessayez. Cliquez sur Charger l'exemple OpenSSL pour remplir ces valeurs automatiquement.
Comment déchiffrer un texte chiffré AES
- 1
Collez le texte chiffré
Déposez votre texte chiffré en Base64 ou en Hex dans le champ de saisie. S'il commence par U2FsdGVkX1, l'outil le signale comme un format OpenSSL/CryptoJS et propose de basculer vers le bon mode.
- 2
Définissez le format et le mode
Pour une chaîne autonome provenant de cet outil, gardez le mode Phrase secrète et le mode GCM/CBC/CTR correspondant. Pour une sortie OpenSSL/CryptoJS, acceptez le basculement (CBC + phrase secrète). Pour des données en clé brute, choisissez Clé brute et l'encodage, et fournissez l'IV s'il n'est pas préfixé.
- 3
Choisissez la fonction de dérivation de clé
En mode OpenSSL, choisissez PBKDF2 (et son nombre d'itérations), EVP-SHA256, ou EVP-MD5 pour correspondre à la façon dont la clé a été dérivée. EVP-MD5 est celle qu'utilise CryptoJS.
- 4
Saisissez la phrase secrète ou la clé
Tapez la phrase secrète exacte, ou collez la clé brute exacte en hexadécimal ou en Base64. Le texte en clair apparaît à droite dès que tout correspond.
- 5
Lisez le diagnostic en cas d'échec
Si le déchiffrement échoue, le panneau nomme la cause probable — mauvais IV, mauvaise clé, erreur de padding, pollution du Base64, ou incompatibilité de KDF — pour que vous puissiez ajuster un réglage à la fois plutôt que de deviner.
Pourquoi le déchiffrement AES échoue — et comment y remédier
Échec de l'authentification GCM
GCM refuse de renvoyer le texte en clair si le tag ne se vérifie pas. La cause est une mauvaise phrase secrète ou clé, le mauvais mode, un mauvais IV, ou un texte chiffré altéré/tronqué — GCM ne peut pas dire lequel. Revérifiez chacun par rapport à la façon dont les données ont été chiffrées.
mode: CBC // but the data was encrypted with GCM => Authentication failed
mode: GCM, same passphrase and key size as encryption => plaintext
CBC : un premier bloc brouillé signifie un mauvais IV
Dans CBC, l'IV n'affecte que le premier bloc de 16 octets. Si le bloc un est incohérent mais que le reste se décode proprement, votre IV est incorrect ; si tout est incohérent, la clé est incorrecte.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
iv: (the exact IV used to encrypt) => Attack at dawn!
Erreur de padding CBC / PKCS#7
Une erreur de padding signifie presque toujours que la clé est incorrecte ; elle peut aussi signifier que le texte chiffré a été corrompu, tronqué, ou n'a pas été rembourré en PKCS#7. Confirmez que tout le texte chiffré a été copié et que la phrase secrète et le KDF correspondent.
passphrase: hunter3 // one character off => padding error
passphrase: hunter2 // exact => plaintext
Pollution du Base64 (ou du hex)
Des retours à la ligne, des espaces, ou des guillemets typographiques collés avec le texte chiffré cassent le décodage. L'outil retire automatiquement les espaces, mais des caractères manquants ou en trop font toujours échouer le décodage.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ= (clean Base64)
U2FsdGVkX1 détecté mais le mode OpenSSL est désactivé
Si l'entrée commence par U2FsdGVkX1, vous avez affaire à une sortie Salted__ d'OpenSSL/CryptoJS, qui ne se déchiffrera pas comme une chaîne phrase secrète normale. L'outil affiche une bannière ; cliquez sur Passer en mode OpenSSL et choisissez le KDF.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
OpenSSL compatible: on, KDF chosen => plaintext
Incompatibilité de KDF (le piège CryptoJS)
Un texte chiffré qui échoue avec PBKDF2 ou SHA-256 mais se déchiffre avec EVP-MD5 a été produit par CryptoJS ou openssl 1.0.2 et antérieur. En ligne de commande, ceux-ci nécessitent -md md5.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
KDF: EVP-MD5 // matches CryptoJS => plaintext
Ce que vous pouvez faire avec le déchiffrement AES
- Déchiffrer une sortie d'openssl enc
- Lisez un bloc Salted__ produit par openssl enc -aes-256-cbc sans passer par un terminal : collez le Base64, saisissez la phrase secrète, choisissez le KDF, et obtenez votre texte en clair.
- Déchiffrer un texte chiffré CryptoJS
- Récupérez des données depuis une ancienne application qui utilisait CryptoJS AES.encrypt(text, passphrase). Sélectionnez EVP-MD5 pour correspondre à sa dérivation de clé MD5 en une seule passe — l'étape que la plupart des gens manquent.
- Déboguer un déchiffrement qui échoue sans cesse
- Quand votre propre code n'arrive pas à déchiffrer quelque chose, collez-le ici pour isoler si le problème vient de la clé, de l'IV, du mode, de l'encodage, ou du KDF, à l'aide du panneau de diagnostic.
- Vérifier un aller-retour de chiffrement
- Confirmez qu'un texte chiffré provenant de la page de chiffrement AES ou de votre application se déchiffre exactement en les octets d'origine.
- Comprendre un texte chiffré inconnu
- Identifiez un format à partir de sa forme — un préfixe U2FsdGVkX1, ou un préfixe de longueur fixe qui ressemble à un IV — et déterminez comment il a été produit avant d'essayer une clé.
Fonctionnement interne et formats du déchiffrement AES
- Déchiffrement GCM — authentifié
- GCM recalcule le tag de 128 bits sur le texte chiffré et le compare avant de renvoyer le moindre texte en clair ; une non-correspondance déclenche une exception au lieu de divulguer des données corrompues. Il utilise l'IV de 96 bits qui était préfixé. Un échec GCM signifie que la clé, le mode, l'IV ou le texte chiffré est incorrect — le chiffrement ne peut pas vous dire lequel, seulement que l'authentification a échoué.
- Déchiffrement CBC — surveillez le premier bloc et le padding
- CBC a deux signatures d'échec distinctes. Si seul le premier bloc de 16 octets est brouillé et que le reste semble correct, l'IV était incorrect. Si tous les blocs sont incohérents, la clé est incorrecte. Une erreur de padding PKCS#7 signifie généralement que la clé est incorrecte, ou que le texte chiffré a été corrompu ou tronqué. CBC n'a pas de tag (contrairement à une construction authentifiée comme un HMAC), donc une mauvaise clé peut même se déchiffrer en octets d'apparence plausible.
- Déchiffrement CTR — silencieux en cas d'erreur
- CTR ne déclenche jamais d'exception : une mauvaise clé produit simplement des données incohérentes, ce qui se manifeste généralement par une erreur « UTF-8 non valide » une fois les octets décodés en texte. Faites correspondre exactement le compteur/IV. Comme il n'y a aucun contrôle d'intégrité, traitez avec suspicion toute sortie CTR que vous n'avez pas authentifiée séparément.
- Dispositions de texte chiffré (F1 / F2 / F3)
- Le format 1 (phrase secrète) est sel(16) puis IV puis texte chiffré, avec le tag GCM de 16 octets ajouté à la fin en mode GCM. Le format 2 (clé brute) est IV puis texte chiffré, ou texte chiffré nu avec un IV fourni séparément. Le format 3 (OpenSSL) est l'en-tête ASCII Salted__ puis un sel de 8 octets puis le texte chiffré. Savoir quelle disposition vous avez indique à l'outil où se trouvent le sel et l'IV, et une clé brute elle-même devrait provenir d'un CSPRNG — voir le générateur de clé secrète.
- Dérivation de clé : faire correspondre ce qui a chiffré les données
- Pour un texte chiffré autonome par phrase secrète, cet outil utilise PBKDF2-HMAC-SHA256 à 600 000 itérations. Pour un texte chiffré OpenSSL/CryptoJS, vous devez sélectionner le KDF qui a été utilisé : PBKDF2 (la valeur par défaut d'openssl -pbkdf2 est 10 000 itérations — réglez votre nombre exact), EVP_BytesToKey avec SHA-256 (openssl 1.1+ sans -pbkdf2), ou EVP_BytesToKey avec MD5 et une seule passe (CryptoJS et openssl 1.0.2 et antérieur). Le bug classique du « ça ne se déchiffre pas » est un texte chiffré CryptoJS ou ancien-openssl essayé avec SHA-256 — passez à EVP-MD5 et ça fonctionne.
Bonnes pratiques de déchiffrement AES
- Commencez par identifier le format
- Avant de toucher aux réglages, regardez le texte chiffré. Un préfixe U2FsdGVkX1 signifie OpenSSL/CryptoJS ; une chaîne autonome provenant de cet outil est au format phrase secrète ; un bloc nu a généralement besoin d'une clé brute et d'un IV séparé.
- Faites correspondre exactement la fonction de dérivation de clé
- Pour un texte chiffré OpenSSL/CryptoJS, le KDF est aussi important que la phrase secrète. Si PBKDF2 échoue, essayez EVP-MD5 (CryptoJS, ancien openssl) ; le nombre d'itérations doit aussi correspondre, pas seulement l'algorithme.
- Collez le texte chiffré proprement
- Des retours à la ligne ou des espaces parasites issus de la copie peuvent corrompre le Base64. Cet outil retire les espaces, mais si le décodage échoue toujours, vérifiez la présence de guillemets typographiques, de caractères manquants, ou d'une copie tronquée. Notre outil Base64 peut vous aider à inspecter une chaîne suspecte.
- Traitez honnêtement un résultat de mauvaise clé
- Avec CTR ou CBC, une mauvaise clé peut produire des octets plutôt qu'une erreur. Si la sortie ressemble à des données incohérentes ou échoue au contrôle UTF-8, la clé ou l'IV est incorrect — ne faites pas confiance à une sortie d'apparence partielle.
- N'envoyez jamais de texte chiffré secret ou de clés à un serveur
- L'intérêt de déchiffrer dans le navigateur est que rien ne quitte la page. Évitez les outils qui envoient des données ; celui-ci utilise Web Crypto localement, et vous pouvez le vérifier avec l'onglet Réseau ou en passant hors ligne. L'AES-256 est robuste — approuvé CNSA 2.0 pour TOP SECRET — donc si vous n'arrivez pas à déchiffrer, le problème vient des paramètres, pas du chiffrement.
FAQ sur le déchiffrement AES
Peut-on déchiffrer l'AES sans la clé ?
Comment déchiffrer une sortie d'openssl enc ?
Que signifie U2FsdGVkX1 au début d'un texte chiffré ?
Comment déchiffrer un texte chiffré CryptoJS ?
GCM ou CBC — pourquoi mon texte chiffré se déchiffre-t-il d'une façon et pas de l'autre ?
Mon texte chiffré ou ma clé sont-ils envoyés quand je déchiffre ici ?
Quelle est la différence entre une phrase secrète et une clé brute lors du déchiffrement ?
Outils connexes
Voir tous les outils →Outil de chiffrement AES — GCM, CBC et CTR
Outils de sécurité
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é.
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.