DES-Text ver- und entschlüsseln

Ein Textfeld und ein Passphrasen-Feld: Verschlüsseln macht aus Text einen gesalzenen Container im OpenSSL-Stil; vorhandenen DES-Geheimtext einfügen und Entschlüsseln liest ihn zurück. Das Ergebnis erscheint unter den Schaltflächen.

Alles läuft mit CryptoJS in der Seite, Text und Passphrase werden nicht hochgeladen. DES ist eine 56-Bit-Chiffre aus den 1970ern, diese Seite dient also dem Lesen und Reproduzieren älterer DES-Daten, nicht dem Schutz neuer Geheimnisse.

  1. Den Text, der verschlüsselt werden soll, oder vorhandenen DES-Geheimtext, der mit U2FsdGVkX1 beginnt, in das obere Feld einfügen.
  2. Die Passphrase in das Schlüsselfeld eingeben. Dieselbe Passphrase wird später zum Lesen gebraucht; sie wird nirgends gespeichert.
  3. Verschlüsseln drücken. Die Ausgabe ist Base64: die Markierung Salted__, acht zufällige Salt-Bytes und danach der Geheimtext.
  4. Zum Lesen den Geheimtext in dasselbe Feld einfügen, die Passphrase stehen lassen und Entschlüsseln drücken.

Was die Ausgabe wirklich ist

Der gesalzene Container und sein zufälliges Salt

Die Ausgabe ist der Container, den CryptoJS und openssl enc erzeugen: die acht Bytes Salted__ (U2FsdGVkX1 in Base64), acht zufällige Salt-Bytes und dann der Geheimtext. DES ist eine Blockchiffre mit 8-Byte-Blöcken im CBC-Modus mit PKCS#7-Padding, der letzte Block fügt also 1 bis 8 Bytes hinzu: Ein 2-Byte- und ein 3-Byte-Beispiel ergeben beide 24-Byte-Container.

Das Salt ist bei jedem Lauf zufällig, derselbe Text mit derselben Passphrase ergibt also jedes Mal eine andere Zeichenkette; eine identische Ausgabe wäre ein Fehler.

Die Ausgabe mit OpenSSL lesen

Schlüssel und IV werden mit dem MD5-basierten EVP_BytesToKey aus Passphrase und Salt abgeleitet — dieselbe Ableitung, die openssl enc mit -md md5 verwendet. Ein Container dieser Seite lässt sich mit openssl enc -d -des-cbc -md md5 -a -k "Passphrase" entschlüsseln, und mit diesem OpenSSL-Befehl erzeugter Geheimtext lässt sich zurück in die Seite einfügen; beide Richtungen wurden geprüft.

DES nutzt einen 56-Bit-Schlüssel, und OpenSSL warnt bereits, dass diese Schlüsselableitung veraltet ist; die Seite behält sie absichtlich, weil vorhandene DES-Daten sie verwenden.

Fehlerfälle und was ein Ergebnis nicht beweist

Eine falsche Passphrase, ein Text, der kein Container ist, und veränderter Geheimtext scheitern an der Padding-Prüfung: Die Seite leert die Ausgabe und zeigt einen Hinweis, statt das vorherige Ergebnis stehen zu lassen. Ein leeres Feld oder eine leere Passphrase werden genauso abgewiesen, bevor etwas läuft.

Der Container hat weder MAC noch Authentifizierungs-Tag, ein entschlüsselter Wert ist also ein Datum und kein Beweis für Echtheit. DES hier nur zum Lesen oder Reproduzieren alter Daten verwenden und für Neues eine moderne authentifizierte Chiffre.

Zuletzt verwendet: