Comment chiffrer et déchiffrer du texte avec Rabbit

Une zone pour le texte et une pour la phrase secrète : Chiffrer transforme le texte clair en chiffré Rabbit CryptoJS et Déchiffrer le relit en UTF-8. Tout s'exécute dans la page.

La phrase secrète n'est enregistrée nulle part et chaque exécution utilise un nouveau sel aléatoire : le même texte avec la même phrase secrète donne donc un chiffré différent à chaque fois.

  1. Collez en haut le texte à chiffrer, ou un chiffré Rabbit existant qui commence par U2FsdGVkX1.
  2. Saisissez la phrase secrète dans le champ à côté des boutons. La clé en est dérivée, il faut donc la même pour relire le résultat.
  3. Appuyez sur Chiffrer ou Déchiffrer. Le résultat remplace le précédent et, en cas d'échec, il est effacé au lieu de laisser un ancien texte à l'écran.
  4. Copier place le résultat dans le presse-papiers ; Effacer vide les deux champs et le résultat.

Ce qu'est réellement la sortie

Le conteneur Salted__ et son sel aléatoire

La sortie est le conteneur que CryptoJS écrit pour les chiffrements à phrase secrète : les huit octets ASCII Salted__ (U2FsdGVkX1 en Base64), huit octets de sel aléatoire, puis le chiffré, le tout en Base64.

La clé de 128 bits et l'IV de 64 bits sont dérivés de la phrase secrète et du sel par EVP_BytesToKey à base de MD5 : la phrase secrète n'est donc jamais la clé directe. Deux exécutions du même texte diffèrent parce que le sel est nouveau à chaque fois — c'est normal, pas une erreur.

Ce que la page peut vérifier et ce qu’elle ne peut pas

Rabbit est un chiffrement de flux sans étiquette d'authentification et la page ne distingue pas un chiffré modifié d'un chiffré intact : en changeant un caractère Base64, le texte déchiffré a changé ou le décodage UTF-8 a échoué avec le message d'erreur (les deux cas observés en modifiant des caractères isolés).

Une phrase secrète erronée échoue le plus souvent au décodage UTF-8 et affiche le message, mais un résultat lisible ne prouve pas l'authenticité : comparez une somme de contrôle quand le contenu compte.

Compatibilité et limites

Un chiffré produit ici se relit avec Rabbit de CryptoJS 3.x et la même phrase secrète. OpenSSL n'embarque pas Rabbit : openssl enc ne peut pas le déchiffrer.

L'entrée se colle, elle ne s'envoie pas : aucun sélecteur de fichier ni récupération d'URL. Lors des tests, 200 Ko ont été chiffrés en 0,1 s environ dans Chrome, sans aucune requête réseau pendant le calcul, et le résultat reste affiché jusqu'à l'exécution suivante.

Outils récents :