Comment chiffrer et déchiffrer du texte AES

Une zone de texte et un champ de phrase de passe : Chiffrer transforme le texte clair en un texte chiffré AES qui commence par U2FsdGVkX1, et Déchiffrer relit ce texte chiffré en UTF-8. Tout se passe dans la page : l'aller-retour fonctionne même sans réseau.

La clé n'est stockée nulle part. Elle est dérivée de la phrase de passe et d'un sel aléatoire à chaque exécution, ce qui explique que le même texte avec la même phrase de passe donne une chaîne différente chaque fois.

  1. Collez le texte à chiffrer, ou un texte chiffré existant qui commence par U2FsdGVkX1, dans la zone du haut.
  2. Saisissez la phrase de passe dans le champ à côté des boutons. C'est le seul secret : la même phrase est nécessaire pour relire le résultat.
  3. Cliquez sur Chiffrer ou Déchiffrer. Le nouveau résultat remplace le précédent et, en cas d'échec, la sortie est vidée au lieu de laisser l'ancien texte à l'écran.
  4. Vérifiez le résultat avec un second outil quand cela compte : openssl enc -d -aes-256-cbc -md md5 -a -pass pass:VOTRE_PHRASE déchiffre un texte produit ici.
  5. Cliquez sur Effacer pour vider le texte, la phrase de passe et le résultat avant l'essai suivant.

Ce qu'est réellement la sortie

Le conteneur Salted__ et son sel aléatoire

La sortie est du Base64 dont les premiers octets décodent Salted__, suivis de huit octets de sel aléatoire puis du texte chiffré. La clé et l'IV sont dérivés de la phrase de passe et de ce sel par EVP_BytesToKey avec MD5 — le schéma qu'utilise openssl enc pour le chiffrement par phrase de passe.

Comme le sel est nouveau à chaque exécution, la même phrase donne une chaîne différente chaque fois, et les deux redonnent le même texte. Vérifié dans les deux sens : openssl lit la sortie de cette page, et cette page lit la sortie de openssl enc -aes-256-cbc -md md5.

Ce que la page ne peut pas vérifier

L'algorithme est AES-256-CBC et le conteneur ne porte ni signature ni étiquette d'authentification. Une phrase de passe erronée, une chaîne tronquée et un octet modifié aboutissent au même message, et un texte chiffré modifié peut ressortir en texte illisible : sur un test de six modifications aléatoires d'un caractère, cinq ont échoué et une a renvoyé des données incohérentes sans prévenir.

La dérivation est une seule passe de MD5 sur la phrase de passe, sans le facteur de travail qu'apportent PBKDF2 ou Argon2. La phrase de passe est donc le point faible : cette page sert à reproduire et à inspecter des données AES existantes, pas à protéger de nouveaux secrets.

Compatibilité et limites

Du texte en entrée, du texte en sortie : les fichiers, les données binaires et les entrées hexadécimales ne sont pas traités ici. Un texte chiffré n'est déchiffré que s'il s'agit de ce conteneur salé par phrase de passe en mode CBC ; une sortie avec -nosalt, avec -K et -iv explicites, avec un autre mode comme ECB ou provenant d'une autre bibliothèque échoue avec le même message.

200 Ko de texte sont chiffrés en une quinzaine de millisecondes dans Chrome ; au-delà de quelques mégaoctets, un outil en ligne de commande local est plus adapté.

Outils récents :