Die DES-Entschlüsselung scheitert mit "bad decrypt" oder einem Padding-Fehler — was prüfe ich?
Die Entschlüsselung erfordert, dass jeder Parameter mit der verschlüsselnden Seite übereinstimmt: die Schlüssel-Bytes, die Schlüssellänge (8/16/24), der Modus (ECB/CBC), der IV, das Padding und ob der Chiffretext Hex oder Base64 ist. Die zwei häufigsten Fallen: Schlüssellängen-Mismatch (ein "DES-Schlüssel" aus 32 Hex-Zeichen ist 16 Bytes — das ist 2-Schlüssel-3DES, nicht Single-DES) und Padding-Namen-Verwechslung (Javas PKCS5Padding IST PKCS#7 für DES — nicht None wählen). Das aufklappbare Panel rechts zeigt für die aktuellen Einstellungen einen äquivalenten OpenSSL-Befehl; ihn an die Gegenseite zu schicken ist der schnellste Weg, die Abweichung zu finden.
Wie lang ist ein DES-Schlüssel? Und 3DES?
Single DES: nominal 64 Bits (8 Bytes, 56 effektiv — ein Bit pro Byte ist ein Paritätsbit). 3DES gibt es in zwei Formen: 2-Schlüssel (16 Bytes, K1‖K2 mit K3=K1) und 3-Schlüssel (24 Bytes, K1‖K2‖K3). Der nominale Schlüsselstoff beträgt 112/168 Bits, aber die effektive Sicherheitsstärke nach NIST (SP 800-57 Part 1 Rev.5, Tabelle 2) liegt nur bei etwa 80 und 112 Bits — und die 3-Schlüssel-Form ist ebenfalls veraltet. Dieses Tool erkennt die Form an der Byte-Anzahl; alles andere als 8/16/24 wirft einen Fehler — CryptoJS und openssl enc -K kürzen stattdessen stumm oder füllen mit Nullen auf, was die häufigste Ursache für Interop-Fehlschläge ist.
Was ist der IV und wie lang ist er bei DES?
Der IV ist der 8-Byte-Wert, den CBC in den ersten Block mischt; ECB verwendet keinen. Er muss genau 8 Bytes haben (16 Hex-Ziffern oder 8 ASCII-Zeichen). Beachten Sie: Der DES-IV ist 8 Bytes, der AES-IV 16 — eine AES-IV-Länge zu kopieren scheitert sofort. Einen IV nie unter demselben Schlüssel wiederverwenden.
Worauf mappt Javas DES/ECB/PKCS5Padding in diesem Tool?
ECB-Modus + PKCS#7-Padding. In der JCE führt "PKCS5Padding" für DES den generischen PKCS#7-Algorithmus aus — PKCS#5 definierte Padding nur für 8-Byte-Blöcke, was zufällig DES' Block ist. Die Ausgabe von Java Cipher.getInstance("DES/ECB/PKCS5Padding") lässt sich hier mit ECB + PKCS#7 und einem 8-Byte-Single-DES-Schlüssel entschlüsseln. ⚠️ Javas 3DES (DESede) akzeptiert nur 24-Byte-Schlüssel — für die 2-Schlüssel-Form müssen Sie K1‖K2 selbst zu K1‖K2‖K1 erweitern.
Wie mappen PHPs des-ede3-Algorithmusnamen?
PHP leiht OpenSSLs Namen: des-ede3-cbc ist 3-Schlüssel-3DES + CBC, des-ede3-ecb ist 3-Schlüssel + ECB; des-ede-cbc ist die 2-Schlüssel-Form. Ein 24-Byte-Schlüssel wählt 3-Schlüssel, 16 Bytes wählen 2-Schlüssel.
Was sind die Paritätsbits in einem DES-Schlüssel? Werden sie geprüft?
Das niederwertige Bit jedes Schlüssel-Bytes ist als Paritätsbit definiert, der eigentliche 56-Bit-Schlüssel sitzt also in 64 Bits. FIPS 46-3 verlangt keine Prüfung — OpenSSL, Java und dieses Tool ignorieren es; beliebige 8 Bytes funktionieren, und Paritätsbits zu ändern ändert den Chiffretext nicht. .NET ist die Ausnahme: Es normalisiert die Parität zuerst und prüft dann gegen eine Weak-Key-Tabelle, sodass Null- und andere schwache Schlüssel von .NET abgelehnt werden, während jede andere Bibliothek fröhlich verschlüsselt — eine Falle, die nur beim Migrieren von Testschlüsseln von Java/OpenSSL zu .NET zuschlägt.
Was passiert bei 3DES, wenn K1 = K2?
In 2-Schlüssel-3DES gilt K3 immer = K1; ist auch K1 = K2, fällt die ganze EDE-Kette auf Single DES zusammen: E_K(D_K(E_K(P))) = E_K(P). Dasselbe passiert, wenn alle drei 8-Byte-Komponenten eines 24-Byte-Schlüssels identisch sind. Dieses Tool verschlüsselt trotzdem (Interop zuerst), aber die echte Stärke ist dann Single-DES mit 56 Bits, nicht 3DES.
Ist DES noch sicher?
Nein — nur noch für Legacy-Interop. NIST hat Single DES am 19.05.2005 zurückgezogen (56-Bit-Schlüssel sind per Brute-Force knackbar; EFFs Deep Crack schaffte es 1998 in 56 Stunden, im Folgejahr in 22 Stunden mit distributed.net). SP 800-131A Rev.2 stuft 2-Schlüssel-TDEA-Verschlüsselung als Disallowed ein und 3-Schlüssel-Verschlüsselung als Disallowed nach 31.12.2023 (Entschlüsselung bleibt "Legacy use", nur für das Lesen historischer Daten); SP 800-67 selbst wurde am 01.01.2024 zurückgezogen. Der kleine 64-Bit-Block trägt zudem die Sweet32-Birthday-Grenze (CVE-2016-2183) — NIST begrenzt ein einzelnes Schlüsselbündel auf 2²⁰ Blöcke (≈8 MB) Klartext. Für alles Neue AES-256 verwenden. Dieses Tool existiert, weil Bank-Clearings, Zahlungs-Gateways und alte Java/.NET-Systeme noch DES-zeitliche Nachrichten fahren — sie zu reparieren beginnt damit, sie lesen zu können.
Warum weicht mein 3DES-Ergebnis von Java/PHP ab?
In der Reihenfolge der Trefferquote prüfen: ① Schlüssellänge — der "32-Hex-DES-Schlüssel" der Gegenseite ist 16 Bytes (2-Schlüssel-3DES), Sie haben als Single DES entschlüsselt; ② Modus — Javas nacktes "DES" defaultet auf ECB, OpenSSLs moduslose Namen des-ede3/des-ede sind ECB (der CBC-Alias ist -des3); PHPs openssl_encrypt verlangt einen expliziten Algorithmusnamen — verwirrend ist, dass es standardmäßig Base64-Text statt roher Bytes ausgibt; ③ Padding — altes PHP-mcrypt nutzte oft Zero-Padding, die JCE nutzt PKCS#5/#7; ④ Kodierung — Hex vs. Base64, und Groß-/Kleinschreibung; ⑤ die CryptoJS-Passwort-Falle — einen String als "Schlüssel" zu übergeben startet Key Derivation (MD5 + zufälliges Salt, mit Salted__ präfixierte Ausgabe, jedes Mal anders), was gar nicht der Rohschlüssel ist — die häufigste Ursache für "gleicher Code, jedes Mal andere Ergebnisse". Dieses Tool lässt Sie jeden Punkt umschalten; der äquivalente OpenSSL-Befehl rechts kann an die Gegenseite geschickt werden, um zu reproduzieren.
ECB oder CBC — was soll ich verwenden?
Was auch immer das System verlangt, mit dem Sie sprechen — Legacy-Interop hat kein Stimmrecht. Wenn Sie wählen dürfen: immer CBC mit zufälligem IV. ECB verschlüsselt gleiche Klartextblöcke zu gleichen Chiffretextblöcken, und DES' kleine 8-Byte-Blöcke lassen Muster noch sichtbarer durchscheinen als bei AES-ECB. Bankprotokolle der DES-Ära nutzen beides; zuerst das Protokolldokument prüfen.
Funktioniert das offline? Werden meine Daten hochgeladen?
Die gesamte Berechnung passiert in Ihrem Browser (reines TypeScript, null Abhängigkeiten, null Netzwerkrequests); Schlüssel und Klartext verlassen das Gerät nie. Nach dem Laden der Seite können Sie offline gehen und weiterarbeiten. Das ist die einzige akzeptable Form für ein Tool, das mit Schlüsseln umgeht.
2-Schlüssel- oder 3-Schlüssel-3DES — was ist in Altsystemen häufiger?
2-Schlüssel (16 Bytes) ist häufiger: Banken und die Zahlungsindustrie haben aus Kompatibilitätsgründen 16-Byte-Schlüssel-Hardware eingesetzt, und SP 800-67 hielt dafür ein separates (früheres) Deprecation-Datum vor. Ein "3DES-Schlüssel" aus 32 Hex-Zeichen ist also am ehesten die 2-Schlüssel-Form. Dieses Tool erkennt die Form automatisch an der Byte-Anzahl.