Saisissez le texte ou un chiffré compatible et le mot de passe associé. Choisissez l’opération pour examiner un aller-retour de chiffrement RC4.
Fonctionne localement dans votre navigateurCette page chiffre et déchiffre du texte avec RC4 dans le navigateur. Le résultat est du texte Base64 dans le conteneur de phrase de passe de CryptoJS qui commence par U2FsdGVkX1, et la même phrase de passe de passe redonne le texte d'origine. RC4 est un chiffrement de flux ancien, aux biais connus : utilisez la page pour lire des données héritées et reproduire la sortie d'autres outils, pas pour protéger de nouvelles données.
Le texte et la phrase de passe restent dans la page : rien n'est envoyé, et l'opération se termine aussi bien avec le réseau coupé. Rien n'est stocké non plus, donc une phrase perdue ne peut pas être retrouvée ici. L'entrée et la sortie sont du texte uniquement : pas d'envoi de fichier, pas de mode binaire, pas de bouton de téléchargement.
La sortie est un conteneur de phrase de passe CryptoJS : les huit octets Salted__ (d'où le début U2FsdGVkX1), huit octets de sel aléatoire, puis la sortie RC4, le tout encodé en Base64. Le matériel de clé est dérivé de la phrase de passe et du sel avec EVP_BytesToKey et MD5, sur 32 octets. Lors des tests, une implémentation indépendante de cette dérivation a déchiffré la sortie de cette page, et un texte chiffré construit de la même façon a été déchiffré par la page.
Le déchiffrement lit le sel dans le conteneur : seule la phrase de passe doit accompagner le texte chiffré. Un sel différent signifie un flux de clé différent, d'où une chaîne différente à chaque exécution pour la même phrase de passe et un retour au même texte dans tous les cas. Le texte est lu en UTF-8 ; ce qui n'est pas de l'UTF-8 valide ne peut pas être représenté ici.
OpenSSL dérive une clé RC4 de 16 octets (openssl enc -rc4 -md md5 ; -rc4-40 en utilise cinq), alors que CryptoJS sur cette page en utilise 32 : les deux ne peuvent pas lire la sortie de l'autre. Lors des tests, OpenSSL a transformé un texte chiffré de la page en données illisibles, et cette page a répondu à un conteneur openssl enc -rc4 par le message de phrase de passe incorrecte. Fournir une clé plus longue à OpenSSL ne corrige rien : -K avec 64 caractères hexadécimaux a affiché « hex string is too long, ignoring excess » et retenu les 16 premiers octets.
Interopérer suppose donc d'implémenter la même dérivation de clé : EVP_BytesToKey(MD5) sur la phrase de passe et le sel, prendre 32 octets, puis exécuter RC4. Pour une contrepartie en ligne de commande qui fonctionne sans modification, utilisez la page AES de cette famille, qui correspond exactement à openssl enc -aes-256-cbc -md md5 ; openssl enc -rc4 est lui aussi hérité et n'est proposé par OpenSSL 3 que via le fournisseur legacy.
Une phrase de passe incorrecte ou une chaîne qui n'est pas l'un de ces conteneurs est signalée sous les boutons, dans la langue de la page. Le contrôle est un test de validité UTF-8 sur les octets déchiffrés : c'est un confort, pas une garantie. Lors des tests, 24 tentatives avec une phrase de passe incorrecte ont toutes été signalées, mais un flux de clé qui se décode par hasard comme du texte passe sans avertissement.
RC4 n'offre aucune authentification : ni les modifications ni la troncature ne sont détectées de façon fiable. Modifier un octet du texte chiffré a changé exactement un caractère du texte retrouvé, sans aucun avertissement, et couper le texte chiffré à environ 60 % de sa longueur a renvoyé le début de la phrase comme s'il s'agissait du message entier. Là où l'intégrité compte, utilisez un chiffrement authentifié comme AES-GCM ; cette page sert à reproduire et inspecter des données RC4 héritées.