Cryptor (AES-256) — Manual

Cryptor komplett: AES-256-GCM, PBKDF2 mit 600.000 Iterationen, Format v2, Generator, Undo, Datei-Funktionen, ältere Formate, Snippets und /pw/-API.

Zurück zur Übersicht: Cryptor (AES-256) · Tool live öffnen: www.jpkc.com/tools/cryptor/

Dieses Manual beschreibt Cryptor (AES-256) vollständig: wie die Oberfläche aufgebaut ist, welche Krypto-Parameter exakt gelten, was jeder Button tut, welche älteren Formate das Tool noch liest und welche Grenzen der Browser-Betrieb mit sich bringt. Die Oberfläche des Tools ist auf Englisch — die Labels werden hier deshalb in ihrer englischen Original-Schreibweise genannt (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.

Aufbau der Oberfläche

Cryptor besteht aus zwei Spalten und einer Karte darunter:

  • Input (links) — das Passwortfeld (Password) mit drei Knöpfen (Anzeigen, Kopieren, Generieren), darunter das Wiederholungsfeld (Repeat password) und das große Textfeld (Message) für Klartext oder Geheimtext.
  • Encryption (rechts oben) — die Knöpfe Encrypt und Decrypt sowie eine Statuszeile, die nach dem Ver- oder Entschlüsseln Verfahren bzw. erkanntes Format, Iterationszahl (nicht beim Legacy-Format) und Dauer meldet.
  • Message (rechts unten) — Copy, Open, Save, Undo und Clear für den Inhalt des Textfelds.
  • Format & decrypting without this tool (unten, volle Breite) — die Beschreibung des Ausgabeformats und fertige Entschlüsselungs-Skripte für Node.js, Python, PHP und OpenSSL.

Der Hinweis unter dem Passwortfeld — „Used for both encryption and decryption. Without it, encrypted text cannot be recovered." — bringt das Kernprinzip auf den Punkt: Es gibt nur ein Passwort, und es wird sowohl zum Verschlüsseln als auch zum Entschlüsseln gebraucht. Geht es verloren, ist der Geheimtext nicht mehr lesbar.

Das Message-Feld dient doppelt: Hier steht entweder der Klartext, den du verschlüsseln willst, oder der Geheimtext, den du entschlüsseln willst. Das Ergebnis einer Aktion ersetzt jeweils den Feldinhalt — der vorherige Stand lässt sich mit Undo zurückholen.

Ablauf

Der typische Ablauf hat drei Schritte:

  1. Passwort festlegen — selbst tippen (dann zur Kontrolle im Feld Repeat password wiederholen) oder über den Schlüssel-Knopf generieren lassen.
  2. Text eingeben — Klartext (zum Verschlüsseln) oder Geheimtext (zum Entschlüsseln) in das Message-Feld, per Open oder per Drag-and-drop aus einer Datei.
  3. Aktion wählen — Encrypt oder Decrypt, alternativ Strg+Enter. Das Ergebnis erscheint im selben Feld und kann kopiert oder gespeichert werden.

Beim Laden prüft Cryptor, ob der Browser die Web-Crypto-API (crypto.subtle) und Web Worker unterstützt. Fehlt eines davon, erscheint die Meldung „Your browser does not support modern encryption (Web Crypto API). Please use a current browser over HTTPS.", und die Aktionsknöpfe (Encrypt, Decrypt, Copy, Open, Save, Clear) bleiben deaktiviert.

Krypto-Parameter im Detail

Die Verschlüsselung von Cryptor nutzt die Web-Crypto-API des Browsers (crypto.subtle). Sie läuft in einem eigenen Web Worker (einem Hintergrund-Thread), damit die Seite auch bei großen Texten bedienbar bleibt. Die Parameter sind fest verdrahtet.

AES-256-GCM

Algorithmus ist AES mit 256 Bit Schlüssellänge im GCM-Modus (Galois/Counter Mode). GCM ist eine authentifizierte Verschlüsselung (AEAD): Neben dem Geheimtext entsteht ein Authentifizierungs-Tag von 128 Bit. Beim Entschlüsseln prüft der Browser dieses Tag — stimmt es nicht (falsches Passwort, manipulierter oder beschädigter Geheimtext), schlägt die Entschlüsselung fehl, statt fehlerhaften Klartext auszugeben.

Zusätzlich bindet Cryptor den Format-Header (etwa cryptor:v2:600000:) als Additional Authenticated Data (AAD) an den Geheimtext. Der Header selbst ist zwar lesbar, aber geschützt: Wer die Iterationszahl darin verändert, bringt das Tag zum Scheitern.

PBKDF2-Schlüsselableitung

Aus deinem Passwort (als UTF-8) wird der eigentliche 32-Byte-Schlüssel über PBKDF2-HMAC-SHA256 mit 600.000 Iterationen abgeleitet. Die hohe Iterationszahl ist Absicht: Sie verlangsamt jeden einzelnen Ableitungsversuch und macht damit das systematische Durchprobieren von Passwörtern teuer. Ältere Texte im Format v1 nutzen noch 100.000 bzw. 300.000 Iterationen (siehe Format v1).

Salt und IV

Vor jeder Verschlüsselung erzeugt Cryptor zwei Zufallswerte aus dem kryptografisch sicheren Generator des Browsers (crypto.getRandomValues):

  • einen Salt von 16 Byte (128 Bit) — er fließt in die PBKDF2-Ableitung ein, sodass dasselbe Passwort jedes Mal einen anderen Schlüssel ergibt;
  • einen IV (Initialisierungsvektor) von 12 Byte (96 Bit) — die für GCM übliche Länge.

Weil Salt und IV bei jedem Lauf neu zufällig sind, ergibt derselbe Text mit demselben Passwort jedes Mal einen anderen Geheimtext. Das ist gewollt und ein Zeichen korrekter Kryptografie.

Ausgabeformat

Das aktuelle Format heißt v2. Der Geheimtext besteht aus einem lesbaren Header und einem Base64-Block:

cryptor:v2:<iterations>:Base64( salt[16] ‖ iv[12] ‖ ciphertext ‖ GCM tag[16] )

key = PBKDF2-HMAC-SHA256( password as UTF-8, salt, iterations, 32 bytes )
AES-256-GCM, additional authenticated data = header incl. last colon, e.g. "cryptor:v2:600000:"

Ein frisch verschlüsselter Text beginnt also immer mit cryptor:v2:600000:. Salt und IV stehen mit im Geheimtext — sie müssen nicht geheim sein und werden zum Entschlüsseln gebraucht. Das Tag (16 Byte) hängt der GCM-Modus an.

Beim Entschlüsseln gelten ein paar Regeln, die das Format robust machen:

  • Leerzeichen und Zeilenumbrüche im Geheimtext werden vor dem Auswerten entfernt. Bricht ein Mailprogramm den Block um, schadet das nicht.
  • Eine Iterationszahl im Header außerhalb von 1.000 bis 10.000.000 wird als ungültig abgewiesen — ein präparierter Header kann den Browser so nicht minutenlang beschäftigen.
  • Trägt der Header eine höhere Versionsnummer, als das Tool kennt (etwa cryptor:v3:), meldet Cryptor „Format version 3 is newer than this tool."
  • Ist der Block kürzer als Salt + IV + Tag + mindestens ein Byte, kommt „The encrypted text is incomplete (too short)."

Der Klartext wird dagegen exakt so verschlüsselt, wie er im Feld steht — Leerzeichen und Leerzeilen am Anfang oder Ende bleiben erhalten.

Die Aktionen im Detail

Encrypt

Verschlüsselt den Inhalt des Message-Feldes mit dem Passwort. Vorbedingungen, die das Tool prüft:

  • Es muss ein Text vorhanden sein (sonst „Please enter a message to encrypt.").
  • Es muss ein Passwort vorhanden sein (sonst „Please enter a password or generate one.").
  • Das Passwort muss mindestens 8 Zeichen lang sein (sonst „The password should be at least 8 characters long.").
  • Ist das Passwort verborgen, muss es im Feld Repeat password identisch wiederholt sein (sonst „The two passwords do not match." bzw. „Please repeat the password (or show it to check it)."). Bei sichtbarem Passwort entfällt diese Prüfung.
  • Sieht der Inhalt schon wie ein Geheimtext aus, fragt Cryptor nach: „This already looks encrypted. Encrypt it again?"

Während der Berechnung zeigt der Knopf „Encrypting…" mit Ladeanzeige, die anderen Aktionsknöpfe sind so lange gesperrt. Danach steht der Geheimtext im Message-Feld, die Statuszeile meldet etwa „Encrypted · AES-256-GCM · 600,000 iterations · 0.42 s", und eine Meldung bestätigt „Message encrypted.".

Decrypt

Entschlüsselt den Inhalt des Message-Feldes mit dem Passwort. Vorbedingungen:

  • Es muss ein Text vorhanden sein (sonst „Please paste the encrypted text first.").
  • Der Text muss als Cryptor-Geheimtext erkennbar sein (sonst „This is not encrypted text from Cryptor (or it was damaged while copying).").
  • Es muss ein Passwort vorhanden sein (sonst „Please enter the password."). Zum Entschlüsseln brauchst du weder die Mindestlänge noch das Wiederholungsfeld.

Cryptor erkennt das Format automatisch:

  • beginnt der Text mit cryptor: → Format v2 (aktuell);
  • beginnt er mit U2FsdGVkX1 (Base64 für Salted__) → Legacy-Format;
  • ist er reines Base64 ohne Header (mindestens 60 Zeichen) → Format v1.

Bei Erfolg ersetzt der Klartext den Feldinhalt, und die Statuszeile nennt das erkannte Format, die Iterationszahl (nicht beim Legacy-Format) und die Dauer, etwa „Decrypted · format v2 · 600,000 iterations · 0.40 s". Bei v2 erscheint „Message decrypted.", bei einem älteren Format der Hinweis „Decrypted an older format. Encrypt it again to upgrade it to the current, stronger format."

Schlägt die Entschlüsselung fehl, erscheint „Wrong password — or the encrypted text was changed or is incomplete.", und der Feldinhalt bleibt unverändert. Ein falsches Passwort und ein beschädigter Text sind technisch nicht zu unterscheiden — bei v2 und v1 passt in beiden Fällen das Authentifizierungs-Tag nicht. Legacy-Texte haben kein solches Tag: Ein falsches Passwort fällt dort über die Padding- und UTF-8-Prüfung auf, eine Veränderung am Text erkennt Cryptor aber nicht sicher.

Generate a password

Der Knopf mit dem Schlüssel-Symbol (Tooltip „Generate a password") öffnet ein Menü mit der Überschrift „Generated in your browser" und vier Einträgen:

Eintrag Ergebnis Stärke
Password · 32 characters 32 Zufallszeichen ≈ 202 Bit
Password · 64 characters 64 Zufallszeichen ≈ 403 Bit
Passphrase · 6 words 6 Wörter, mit - verbunden ≈ 78 Bit
Passphrase · 8 words 8 Wörter, mit - verbunden ≈ 103 Bit

Erzeugt wird im Browser mit crypto.getRandomValues und gleichverteilter Auswahl (ohne Modulo-Verzerrung) — es geht keine Anfrage an den Server. Die Zeichen-Passwörter stammen aus einem Satz von 79 druckbaren ASCII-Zeichen: Klein- und Großbuchstaben, Ziffern und , . - ; _ # + * ! $ % & / ( ) = ?. Der Satz ist bewusst ASCII-only, damit sich das Passwort auf jeder Tastatur tippen lässt. Die Passphrasen stammen aus der EFF-Wortliste (7.776 englische Wörter), die das Tool erst beim ersten Bedarf nachlädt — etwa crumb-velvet-unfold-stucco-lagoon-ripple.

Nach dem Generieren ist das Passwort sichtbar, das Wiederholungsfeld wird geleert und ausgeblendet, und eine Meldung erinnert dich daran, das Passwort sicher abzulegen. Auch das Generieren lässt sich mit Undo zurücknehmen.

Passwort anzeigen, wiederholen, kopieren

  • Show password / Hide password (Auge) — schaltet das Passwortfeld zwischen verborgen (Punkte) und Klartext um. Standardmäßig ist es verborgen.
  • Repeat password — erscheint nur, solange das Passwort verborgen ist. Es schützt vor einem Tippfehler, den du nicht sehen kannst und der den Text unwiederbringlich machen würde. Beim Verschlüsseln muss es übereinstimmen; ist das Passwort eingeblendet, entfällt es.
  • Copy password — kopiert das Passwort in die Zwischenablage („Password copied."), auch wenn es verborgen ist. Ist das Feld leer, kommt „There is no password to copy.".

Passwort- und Textfeld haben Autovervollständigung und Rechtschreibprüfung abgeschaltet; zusätzlich tragen die Passwortfelder Attribute, mit denen 1Password und LastPass dort keine gespeicherten Zugangsdaten vorschlagen.

Passwort-Stärke

Rechts über dem Passwortfeld zeigt Cryptor ein Stärke-Abzeichen mit Bit-Angabe. Die Stufen:

Bit Anzeige
unter 40 weak
40 bis unter 60 fair
60 bis unter 80 strong
ab 80 very strong

Für generierte Passwörter ist die Zahl exakt (Länge × Informationsgehalt pro Zeichen bzw. Wort). Für getippte Passwörter steht „(estimate)" dahinter: Cryptor schätzt aus den verwendeten Zeichenklassen und der Länge, deckelt Wiederholungen und bewertet gängige Basiswörter wie password, qwertz oder sommer — auch mit angehängten Ziffern oder Zeichen — mit nur 15 Bit. Reine Ziffern- oder Sonderzeichenfolgen unter 12 Zeichen kommen auf höchstens 20 Bit. Selbst ausgedachte Wort-Passphrasen werden zeichenbasiert eher überschätzt; die Anzeige bleibt eine Orientierung.

Copy

Kopiert den aktuellen Inhalt des Message-Feldes in die Zwischenablage. Ist das Feld leer, erscheint „Nothing to copy.".

Open, Save, Clear

Die Karte Message bündelt den Dateiumgang:

  • Open öffnet einen Datei-Dialog (vorgeschlagen werden .txt, .enc, .aes und Textdateien) und lädt den Inhalt als UTF-8 in das Message-Feld („Loaded: Dateiname"). Dateien über 20 MB lehnt Cryptor ab. Enthalten die ersten 8 KB der Datei Null-Bytes oder ist sie kein gültiges UTF-8, kommt „… is not a text file. Cryptor encrypts text only." — Binärdateien würden beim Einlesen als Text sonst zerstört. Ein Byte-Order-Mark am Dateianfang wird entfernt.
  • Save lädt den Feldinhalt als UTF-8-Textdatei herunter. Erkennt Cryptor einen Geheimtext, heißt die Datei encrypted.txt, sonst plaintext.txt. Ist das Feld leer, kommt „Nothing to save.".
  • Clear leert nach einer Rückfrage („Clear message and password? Undo restores them.") das Message-Feld, das Passwort und das Wiederholungsfeld. Ist schon alles leer, meldet Cryptor „Everything is already empty.".

Undo

Weil Cryptor das Textfeld per Skript befüllt, wäre die normale Rückgängig-Funktion des Browsers danach leer. Deshalb führt das Tool einen eigenen Verlauf mit bis zu 20 Schritten. Gesichert wird vor jedem Verschlüsseln, Entschlüsseln, Öffnen bzw. Fallenlassen einer Datei, Leeren und Generieren eines Passworts — und zwar Message, Passwort und Wiederholungsfeld zusammen.

  • Undo stellt den vorherigen Stand wieder her („Restored the previous state."). Der Knopf ist grau, solange es nichts zurückzunehmen gibt.
  • Strg+Z (Mac: Cmd+Z) löst dasselbe aus, wenn der Fokus außerhalb der Eingabefelder liegt oder wenn das Message-Feld noch unverändert das letzte Ergebnis enthält. Hast du im Feld schon weitergetippt, gilt wieder das normale Rückgängig des Browsers.

Der Verlauf lebt nur im Arbeitsspeicher des Tabs — nach dem Neuladen ist er weg.

Tastenkürzel

  • Strg+Enter (im Tool als „Ctrl+Enter" beschriftet, Mac: Cmd+Enter) im Message-, Passwort- oder Wiederholungsfeld: Erkennt Cryptor einen Geheimtext, wird entschlüsselt, sonst verschlüsselt.
  • Strg+Z: Undo wie oben beschrieben.

Drag-and-drop

Du kannst eine Datei direkt auf das Message-Feld ziehen und fallen lassen; sie wird dann wie bei Open geladen und geprüft („Dropped: Dateiname"). Während du eine Datei über das Feld ziehst, hebt es sich optisch hervor. Ziehst du markierten Text statt einer Datei hinein, greift das normale Verhalten des Browsers.

Format & decrypting without this tool

Die Karte am Seitenende macht Cryptor unabhängig von sich selbst: Sie beschreibt das Format (siehe Ausgabeformat) und liefert in vier Reitern kurze Skripte, mit denen du einen Text ohne diese Website entschlüsselst. Jeder Reiter hat einen Kopierknopf.

Reiter Voraussetzung Aufruf
Node.js Node.js 18+, keine Pakete als decrypt.mjs speichern, node decrypt.mjs message.txt
Python Python 3 mit pip install cryptography als decrypt.py speichern, python3 decrypt.py message.txt
PHP PHP 7.1+ mit OpenSSL-Extension als decrypt.php speichern, php decrypt.php message.txt
Older formats OpenSSL Befehl für das Legacy-Format, siehe unten

Die drei Skripte lesen die Datei, entfernen Leerraum, fragen das Passwort interaktiv ab und geben den Klartext aus. Sie verstehen das Format v2.

Format v1 (Januar bis Oktober 2026)

Texte, die Cryptor zwischen Januar und Oktober 2026 erzeugt hat, sind reines Base64 ohne Header — gleiches Layout (Salt, IV, Geheimtext, Tag), aber ohne AAD. Bis zum 15. März 2026 wurden sie mit 100.000 PBKDF2-Iterationen verschlüsselt, danach mit 300.000. Weil die Zahl nicht im Text stand, probiert Cryptor beim Entschlüsseln beide Werte nacheinander; das GCM-Tag schließt dabei falsche Treffer aus. Damit sind auch die frühen v1-Texte wieder lesbar. Bei einem falschen Passwort rechnet Cryptor deshalb beide Varianten durch, bevor die Fehlermeldung kommt.

Legacy-Format (gibberish-aes)

Noch ältere Texte (aus der Zeit vor 2026) beginnen mit U2FsdGVkX1 und folgen dem OpenSSL-Format Salted__: AES-256-CBC mit Schlüssel und IV aus EVP_BytesToKey mit MD5. Erzeugt hat sie damals die Bibliothek gibberish-aes; Cryptor entschlüsselt sie heute über die Web-Crypto-API (AES-CBC) und eine MD5-Implementierung aus noble-hashes — die alte Bibliothek ist nicht mehr an Bord.

Dabei prüft Cryptor das komplette Padding und verlangt gültiges UTF-8 als Ergebnis. Ein falsches Passwort führt deshalb zuverlässig zur Fehlermeldung, statt einen scheinbar „entschlüsselten" Zeichensalat auszugeben.

Ohne Cryptor entschlüsselst du solche Texte mit OpenSSL:

openssl enc -d -aes-256-cbc -md md5 -a -in message.txt

Neu verschlüsselt wird ausschließlich im Format v2. v1 und Legacy kann Cryptor nur noch lesen, nicht mehr erzeugen.

API: Passwort per curl

Für Skripte bietet Cryptor einen kleinen Endpunkt, den die Seite selbst nicht benutzt:

curl https://www.jpkc.com/tools/cryptor/pw/32/
  • Antwort: ein Zufallspasswort der gewünschten Länge als text/plain, mit Cache-Control: no-store. Erzeugt wird es serverseitig mit PHPs random_int aus demselben 79-Zeichen-Satz wie im Browser.
  • Länge: 1 bis 64. Alles andere (Nicht-Ziffern, 0, 65 …) beantwortet der Server mit 404 und dem Hinweis „Usage: /tools/cryptor/pw/{length}/ with a length from 1 to 64".
  • Rate-Limit: 120 Anfragen pro 60 Sekunden und IP-Adresse; darüber gibt es 429 mit Retry-After-Header.

Betriebsgrenzen und Datenschutz

  • Clientseitig: Ver- und Entschlüsselung sowie die Passwort-Erzeugung laufen vollständig im Browser. Klartext, Passwort und Geheimtext verlassen ihn nicht. Nachgeladen werden nur statische Dateien: der Krypto-Worker samt Modulen beim ersten Ver- oder Entschlüsseln und die EFF-Wortliste, sobald du eine Passphrase erzeugst — ohne Daten von dir.
  • Sicherer Kontext nötig: Die Web-Crypto-API verlangt HTTPS (oder localhost). Ohne sie oder ohne Web-Worker-Unterstützung bleiben die Aktionsknöpfe deaktiviert.
  • Nur Text: Cryptor verschlüsselt Text. Binärdateien weist es ab, Dateien sind auf 20 MB begrenzt.
  • Kein Verlauf: Cryptor speichert bewusst nichts — keine Historie, kein lokaler Cache der Inhalte. Neu laden heißt: leere Felder, leerer Undo-Verlauf.
  • Passwort-Mindestlänge: 8 Zeichen zum Verschlüsseln.
  • Kein Schlüssel-Recovery: Ohne das richtige Passwort gibt es keinen Weg zurück zum Klartext — das ist der Sinn der Sache, aber auch die wichtigste Stolperfalle.

Für den Einstieg und die Zielgruppen siehe die Übersichtsseite. Konkrete Durchläufe stehen in den Beispielen, Strategie und Stolperfallen in den Tipps & Tricks. Ausprobieren kannst du alles direkt im Tool.