So ver- und entschlüsseln Sie Text mit RC4

Diese Seite ver- und entschlüsselt Text mit RC4 im Browser. Das Ergebnis ist Base64-Text im Passphrasen-Container von CryptoJS, der mit U2FsdGVkX1 beginnt, und dieselbe Passphrase macht daraus wieder den Ausgangstext. RC4 ist eine alte Stromchiffre mit bekannten Schwächen: Nutzen Sie die Seite, um alte Daten zu lesen und die Ausgabe anderer Werkzeuge nachzuvollziehen, nicht um Neues zu schützen.

Text und Passphrase bleiben in der Seite: Es wird nichts hochgeladen, und ein Durchlauf gelingt auch mit abgeschaltetem Netzwerk. Gespeichert wird ebenfalls nichts, eine verlorene Passphrase lässt sich hier also nicht wiederherstellen. Ein- und Ausgabe sind reiner Text: kein Datei-Upload, kein Binärmodus und kein Download-Knopf.

  1. Fügen Sie den zu verschlüsselnden Text in das Textfeld ein und tragen Sie die Passphrase in das Schlüsselfeld ein.
  2. Klicken Sie auf Verschlüsseln. Das Base64-Ergebnis erscheint im Feld darunter; derselbe Text mit derselben Passphrase ergibt jedes Mal eine andere Zeichenfolge, weil jeder Lauf ein neues zufälliges Salt zieht.
  3. Zum Lesen einer Nachricht fügen Sie die vollständige Base64-Zeichenfolge in das Textfeld ein, geben dieselbe Passphrase ein und klicken auf Entschlüsseln.
  4. Copy legt das Ergebnis in die Zwischenablage; Clear leert Textfeld, Passphrase und Ergebnis.
  5. Bewahren Sie die Passphrase sicher auf: Sie ist das einzige Geheimnis des Verfahrens, und die Seite behält weder sie noch den Text.

Der Container, OpenSSL und die Grenzen von RC4

Woraus das Base64-Ergebnis besteht

Die Ausgabe ist ein Passphrasen-Container von CryptoJS: die acht Bytes Salted__ (daher der Anfang U2FsdGVkX1), acht zufällige Salt-Bytes und danach die RC4-Ausgabe, alles Base64-kodiert. Das Schlüsselmaterial entsteht aus Passphrase und Salt über EVP_BytesToKey mit MD5 und ist 32 Bytes lang. Im Test hat eine unabhängige Implementierung dieser Ableitung die Ausgabe dieser Seite entschlüsselt, und ebenso erzeugter Geheimtext ließ sich in der Seite wieder entschlüsseln.

Die Entschlüsselung liest das Salt aus dem Container, daher muss nur die Passphrase mit dem Geheimtext weitergegeben werden. Ein anderes Salt bedeutet einen anderen Schlüsselstrom — deshalb ergibt derselbe Satz bei jedem Lauf eine andere Zeichenfolge und führen all diese Zeichenfolgen zurück zum selben Text. Der Klartext wird als UTF-8 gelesen; was kein gültiges UTF-8 ist, lässt sich hier nicht darstellen.

OpenSSL und diese Seite verwenden nicht dasselbe RC4

OpenSSL leitet einen RC4-Schlüssel mit 16 Bytes ab (openssl enc -rc4 -md md5; -rc4-40 nutzt fünf), CryptoJS auf dieser Seite arbeitet mit 32 Bytes, deshalb können beide die Ausgabe des anderen nicht lesen. Im Test machte OpenSSL aus einem Geheimtext dieser Seite Datenmüll, und diese Seite beantwortete einen Container von openssl enc -rc4 mit der Meldung zur falschen Passphrase. Ein längerer Schlüssel hilft nicht: -K mit 64 Hex-Zeichen meldete „hex string is too long, ignoring excess“ und verwendete die ersten 16 Bytes.

Für Interoperabilität muss dieselbe Schlüsselableitung implementiert werden: EVP_BytesToKey(MD5) über Passphrase und Salt, die ersten 32 Bytes nehmen und damit RC4 ausführen. Wer eine unveränderte Kommandozeilen-Gegenseite braucht, nimmt die AES-Seite dieser Familie, die exakt zu openssl enc -aes-256-cbc -md md5 passt; auch openssl enc -rc4 selbst ist Altbestand und in OpenSSL 3 nur über den Legacy-Provider verfügbar.

Falsche Passphrase, geänderte Bytes, abgeschnittener Geheimtext

Eine falsche Passphrase oder eine Zeichenfolge, die keiner dieser Container ist, wird unter den Schaltflächen in der Sprache der Seite gemeldet. Die Prüfung ist ein UTF-8-Test der entschlüsselten Bytes, also eine Bequemlichkeit und keine Garantie: Im Test wurden 24 Versuche mit falscher Passphrase alle gemeldet, ein Schlüsselstrom, der zufällig als Text dekodiert, kommt jedoch stillschweigend durch.

RC4 bietet keine Authentifizierung, und weder Änderungen noch Kürzungen werden zuverlässig erkannt. Das Kippen eines Bytes im Geheimtext änderte genau ein Zeichen des Klartexts und zeigte keine Warnung, und das Kürzen des Geheimtexts auf etwa 60 % der Länge lieferte den ersten Teil des Satzes, als wäre er die ganze Nachricht. Wo Manipulation zählt, ist eine authentifizierte Chiffre wie AES-GCM die richtige Wahl; diese Seite dient dem Nachvollziehen und Prüfen alter RC4-Daten.

Zuletzt verwendet: