Chiffrement et déchiffrement AES
Chiffrez un message avec un mot de passe et déchiffrez-le plus tard, ou utilisez des clés et IV bruts pour tester votre propre code. Tout se fait sur votre appareil avec l'API Web Crypto.
Intégrer ce calculateur à votre site
Copiez le code et collez-le dans le HTML de votre page. C'est gratuit ; merci de garder le lien vers la source.
Ce que fait le mode mot de passe
Votre mot de passe est transformé en clé de 256 bits par PBKDF2-HMAC-SHA256 avec 600 000 itérations (la recommandation de l'OWASP) et un sel aléatoire de 16 octets. Le texte est chiffré en AES-256-GCM avec un nonce aléatoire de 12 octets ; le résultat est sel + nonce + chiffré + tag de 16 octets, en Base64. Chiffrer deux fois le même texte donne deux résultats différents, c'est normal.
Le déchiffrer ailleurs tient en quelques lignes, par exemple en Python avec le paquet cryptography :
import base64
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
data = base64.b64decode(chiffre)
sel, nonce, corps = data[:16], data[16:28], data[28:]
cle = PBKDF2HMAC(hashes.SHA256(), 32, sel, 600_000).derive(mot_de_passe.encode())
print(AESGCM(cle).decrypt(nonce, corps, None).decode())L'AES en bref
L'AES (FIPS 197) est le chiffrement par blocs normalisé par le NIST en 2001. Il chiffre des blocs de 16 octets avec une clé de 128, 192 ou 256 bits, et le mode décide de leur enchaînement : CBC demande un remplissage et un IV aléatoire, CTR transforme l'AES en chiffrement de flux et GCM ajoute un tag d'authentification qui détecte toute modification. Perdre le mot de passe ou la clé, c'est perdre les données : aucune récupération n'est possible.
Questions fréquentes
Quelle option choisir ?
Pour vos propres messages, le mode mot de passe par défaut (AES-256-GCM) : il est authentifié et détecte un mauvais mot de passe ou un texte altéré. Le format OpenSSL/CryptoJS sert à échanger avec du code utilisant CryptoJS.AES ou openssl enc, et la clé brute à reproduire une implémentation précise.
Peut-on déchiffrer ici un texte commençant par U2FsdGVkX1 ?
Oui, si vous connaissez le mot de passe. U2FsdGVkX1 est « Salted__ » en Base64, l'en-tête écrit par CryptoJS et OpenSSL. L'ancienne dérivation MD5 et la nouvelle en SHA-256 sont essayées automatiquement.
Pourquoi pas de mode ECB ?
Les navigateurs ne le proposent pas car il n'est pas sûr : des blocs de texte identiques donnent des blocs chiffrés identiques et laissent voir des motifs. Utilisez CBC, CTR ou, mieux, GCM.
Ce que je colle est-il envoyé à un serveur ?
Non. Cet outil fonctionne entièrement dans votre navigateur, avec JavaScript et l'API Web Crypto intégrée. Rien de ce que vous tapez, collez ou ouvrez n'est envoyé ni conservé.