Skip to content

DES / 3DES versleutel- en ontsleuteltool

DES/3DES (2/3 sleutels) met ECB/CBC en PKCS#7 versleutelen in je browser. Sleutellengtes (8/16/24 bytes) strikt gevalideerd — nooit stilletjes afgekapt. Elk resultaat met een gelijkwaardig OpenSSL-commando.

Geen tracking Draait in je browser Gratis
Versleuteling draait volledig in je browser — de sleutel en de gegevens die je invoert verlaten dit apparaat nooit.

Cijfertekst
Gelijkwaardig OpenSSL-commando
—

Het commando bevat de sleutel die je hebt ingevoerd.

DES-testvector uit FIPS 81

Berekend tijdens de build door de engine die deze pagina draait — check je eigen DES-implementatie hiertegen.
Sleutel (enkele DES) 0123456789abcdef
Platte tekst 4e6f772069732074
Cijfertekst (ECB, geen padding) 3fa40e8a984d4815
De DES/3DES-engine bevestigt de FIPS 81-vector en werd vergeleken met OpenSSL 3 (des-ede / des-ede3, met enkele DES geverifieerd via de K‖K‖K-equivalentie) op 3.000+ willekeurige combinaties over ECB en CBC; de gelijkwaardige OpenSSL-commando's zijn in een echte shell uitgevoerd ter vergelijking. Bibliotheekdefaults zijn bevestigd door ze te draaien en de bron te lezen; zie alternatives. — Go Tools Security Team · Sep 28, 2026

Geschreven en gereviewd door de ontwikkelaars die de crypto-tools bouwen. Elke cijfertekst en elk aantal bytes op deze pagina wordt door de engine van de tool berekend en door tests gecontroleerd.

Snelle antwoorden over DES

DES-sleutellengte

8 / 16 / 24 bytes Enkele DES: 8 bytes (56 effectieve bits). 3DES: 16 bytes (2-key) of 24 bytes (3-key). Nominaal sleutelmateriaal 112/168 bits; effectieve veiligheidssterkte NIST circa 80/112 bits (SP 800-57). Deze tool detecteert automatisch op het aantal bytes; andere lengtes geven een fout.

FIPS 81-testvector

3fa40e8a984d4815 Sleutel 0123456789abcdef, platte tekst "Now is t" (hex 4e6f772069732074): enkele DES ECB zonder padding geeft 3fa40e8a984d4815.

Hoe lang is de DES-IV

8 bytes 8 bytes (16 hex-cijfers), alleen CBC — ECB gebruikt er geen. Anders dan de 16-bytes IV van AES.

Wat is Java's PKCS5Padding

= PKCS#7 Voor DES is het PKCS#7 — hetzelfde padding-algoritme onder zijn historische naam (PKCS#5 definieerde alleen 8-bytes blokken, wat toevallig de blokken van DES zijn).

Is DES vandaag veilig

Alleen legacy-interop Nee. Enkele DES teruggetrokken in 2005; 3DES gedeprecieerd in SP 800-131A Rev.2 (2023). Alleen legacy-interop — gebruik AES-256 voor alles wat nieuw is.

Wat zijn DES en 3DES (Data Encryption Standard)?

DES (Data Encryption Standard) is het symmetrische blokcijfer dat de Amerikaanse standaardisatieorganisatie in 1977 aannam, gebaseerd op het Lucifer-ontwerp van IBM . Het verwerkt 64-bits (8-bytes) blokken onder een nominale 64-bits sleutel met 56 effectieve bits, via 16 rondes van een Feistel-structuur.

3DES (TDEA, Triple DES) koppelt DES drie keer aan elkaar om de korte sleutel te verhelpen: C = E_K3(D_K2(E_K1(P))). De middelste stap is een ontsleuteling, zodat K1=K2=K3 de keten laat uiteenvallen in enkele DES — een bewuste compatibiliteitskeuze. De 2-key-vorm (K3=K1) heeft circa 112 effectieve bits en is de meest voorkomende vorm in legacy-banksystemen.

NIST nam enkele DES in 2005 uit de roulatie (FIPS 46-3-mededeling) en deprecieerde 3DES in SP 800-131A Rev.2 (2023). De enige reden dat ze nog bestaan is legacy-interop: bankclearings, betalingsgateways en Java/.NET/PHP-systemen uit de jaren '90/'00 draaien nog steeds op cryptografie uit het DES-tijdperk. Nieuwe ontwerpen moeten AES-256 gebruiken.

# OpenSSL single DES (legacy provider)
openssl enc -des-ecb -provider legacy -provider default -K 0123456789abcdef -nopad

# 3-key 3DES CBC + PKCS#7 (default provider)
openssl enc -des-ede3-cbc -K <48 hex digits> -iv <16 hex digits> -base64 -A

Wat deze DES-tool doet

Strikte validatie van alle drie de sleutellengtes

8/16/24 bytes worden automatisch herkend als enkele DES / 2-key / 3-key 3DES; al het andere geeft een fout. In tegenstelling tot de stille truncatie van CryptoJS of het afkappen-met-waarschuwing van openssl enc -K, falen verkeerde sleutels luid — de nummer één oorzaak van interop-mismatches.

FIPS 81-vector berekend tijdens de build

De testvectortabel onderaan wordt tijdens de build door dezelfde engine afgeleid, zodat crawlers de referentiewaarde lezen zonder JS uit te voeren en het afgedrukte getal nooit kan afwijken van het interactieve.

Gelijkwaardig OpenSSL-commando

Elke parametercombinatie hoort bij een openssl enc-commando dat het resultaat op OpenSSL 3 reproduceert, inclusief de legacy-provider-flags voor enkele DES. Stuur het naar de andere kant om de parameterafwijking vast te pinnen.

GBK-platte tekst ondersteund

DES-tijdperk Java getBytes() op een Chinese Windows JDK produceert GBK. Beide richtingen accepteren hier GBK, dus Chinese platte tekst van oude systemen hoeft niet vooraf geconverteerd.

Volledig in de browser

Puur TypeScript, nul afhankelijkheden, nul netwerkverzoeken. Sleutels en platte tekst verlaten het apparaat nooit; werkt offline zodra geladen. De enige acceptabele vorm voor een tool die sleutels verwerkt.

DES-bibliotheekdefaults per taal

Java (JCE)

"DES" gebruikt standaard ECB + PKCS5Padding

Cipher.getInstance("DES") is gelijk aan DES/ECB/PKCS5Padding; "DESede" is 3DES maar accepteert alleen 24-bytes sleutels — breid K1‖K2 zelf uit naar K1‖K2‖K1 voor 2-key. PKCS5Padding is PKCS#7 voor DES. IV weglaten: versleutelen kiest een willekeurige (op te halen via getIV()), ontsleutelen gooit "Parameters missing".

PHP (openssl_encrypt)

des-ede3-cbc / des-ede-cbc

De algoritmenamen volgen OpenSSL: des-ede3 is drievoudige ECB, des-ede3-cbc is CBC. $options=0 (standaard) geeft Base64-tekst; OPENSSL_RAW_DATA voor ruwe bytes. Korte sleutels worden stilletjes met nullen gevuld; een lege IV waarschuwt en versleutelt dan met een nul-IV.

OpenSSL 3 (openssl enc)

-des-ede3-cbc werkt standaard

Enkele DES heeft -provider legacy -provider default nodig (sommige builds laten legacy helemaal weg). -K/-iv nemen hex; PKCS#7 standaard, -nopad om uit te zetten. -K kapt te lange sleutels af met een waarschuwing.

CryptoJS

Kapt illegale sleutellengtes stilletjes af

Een 8-bytes raw-sleutel (WordArray) werkt; verkeerde lengtes worden stilletjes met nullen gevuld of afgekapt (4 bytes gevuld, 10 afgekapt — geen fout). Een string als "sleutel" laat key derivation draaien (MD5 + willekeurige salt, uitvoer met voorvoegsel Salted__, elke keer anders). CBC zonder IV is een TypeError-crash, geen nul-IV. TripleDES met een 8-bytes sleutel wordt stilletjes enkele DES.

.NET

TripleDES gebruikt standaard CBC + PKCS7

TripleDESCryptoServiceProvider: Mode=CBC, Padding=PKCS7, Key van 16 of 24 bytes (DES neemt 8). .NET weigert zwakke sleutels (de pariteit wordt eerst genormaliseerd en dan vergeleken met de tabel met zwakke sleutels — een nul-sleutel gooit een exception) terwijl elke andere bibliotheek ze accepteert. Let hierop bij migreren.

Go (crypto/des)

Modus expliciet zelf koppelen

des.NewCipher geeft de ruze blok-interface met 8-bytes sleutel; je wikkelt die zelf in cipher.NewCBCEncrypter en dergelijke. 3DES is des.NewTripleDESCipher (24 bytes). De IV-lengte wordt strenger gecontroleerd dan in de meeste talen.

DES-versleutelingsvoorbeelden

FIPS 81-testvector (enkele DES, ECB, geen padding)

Sleutel 0123456789abcdef, platte tekst (hex) 4e6f772069732074
3fa40e8a984d4815

De platte tekst is de ASCII-string "Now is t". Dit is de klassieke FIPS 81-vector, en de tabel onderaan de pagina wordt bij de build berekend door dezelfde engine — als jouw DES-implementatie met deze invoer niet deze waarde oplevert, zit er een bug in.

2-key 3DES + CBC + PKCS#7: van UTF-8-platte tekst naar Base64

Sleutel 0123456789abcdeffedcba9876543210 (16 bytes), IV fedcba9876543210, platte tekst: DES interop test: order 20260927-0042
QmnMoewSecp7Z7cr/w3/4AjM9lpFo1swc4dfLNH5UkgCwU5n7WIdKA==

Een sleutel van 16 bytes wordt behandeld als 2-key 3DES (K1 = eerste 8 bytes, K2 = laatste 8, K3 = K1 — de EDE2-assemblage). PKCS#7 over een blok van 8 bytes is precies wat Java "PKCS5Padding" noemt voor DES: hetzelfde schema, alleen de blokgrootte verschilt.

3-key 3DES + CBC + PKCS#7

Sleutel 0123456789abcdef23456789abcdef010456789abcdef012 (24 bytes), IV fedcba9876543210, platte tekst: hello des
DhDQX9sfxKOirZ8eyqT7Jg==

Een sleutel van 24 bytes is de volledige drievoudige EDE3: C = E_K3(D_K2(E_K1(P))). Van de drie sleutellengtes is dit de enige vorm zonder gedegenereerd equivalent — zowel 2-key als K1=K2=K3 klappen uiteen in zwakkere cijfers.

Zo gebruik je deze DES-versleutel- en ontsleuteltool

  1. 1

    Kies modus en padding

    Voor Java DES/ECB/PKCS5Padding kies je ECB + PKCS#7; voor openssl enc -des-ede3-cbc kies je CBC + PKCS#7. Oude PHP mcrypt-code gebruikt doorgaans Zero padding.

  2. 2

    Voer de sleutel in (8/16/24 bytes)

    Het aantal bytes selecteert het cijfer: 8 = enkele DES, 16 = 2-key 3DES, 24 = 3-key 3DES. Kies Hex, Text of Base64; de badge toont het echte aantal bytes en de gedetecteerde vorm. Verkeerde lengtes geven een fout — er wordt nooit iets afgekapt.

  3. 3

    Voor CBC, voer de 8-bytes IV in

    ECB heeft geen IV nodig. De IV moet exact 8 bytes zijn — 16 hex-cijfers, niet de 32 van AES. De knop Random genereert een verse.

  4. 4

    Plak en krijg live resultaten

    Versleutelen: voer tekst (UTF-8/GBK) of hex in. Ontsleutelen: plak Base64- of hex-cijfertekst. De resultaten worden bijgewerkt terwijl je typt, met kopiëren in één klik en een round-tripcontrole via de Decrypt-this-knop.

  5. 5

    Neem het gelijkwaardige OpenSSL-commando mee naar de andere kant

    Het inklapbare paneel geeft een openssl enc-commando dat het huidige resultaat reproduceert (sleutel inbegrepen; enkele-DES-commando's dragen -provider legacy -provider default). Stuur het naar wie je mee interoperaat — de snelste manier om te beslissen wiens parameter fout zit.

Waarom DES-ontsleuteling mislukt

Sleutellengte is geen 8/16/24

Een "DES-sleutel" van 32 hex-tekens is 16 bytes — dat is 2-key 3DES, niet enkele DES. Omgekeerd mislukt het ook om een 24-bytes sleutel aan een alleen-2-key-systeem te geven.

✗ Fout
Sleutel 0123456789abcdeffedcba9876543210 (16 bytes) met enkele DES geselecteerd → fout "de sleutel moet exact 8 bytes zijn"
✓ Correct
Dezelfde sleutel als 16 bytes (2-key 3DES) → ontsleutelt netjes

PKCS5 vs PKCS7 naamverwarring

Java schrijft "PKCS5Padding" voor DES maar voert het PKCS#7-algoritme uit (PKCS#5 definieerde ooit alleen 8-bytes-blokpaddings, die gelijk zijn aan het blok van DES, dus de naam bleef hangen). None of Zero kiezen tegen een JCE-cijfertekst faalt altijd.

✗ Fout
JCE `DES/ECB/PKCS5Padding`-cijfertekst ontsleuteld als "geen padding" → rommel aan het eind of een bad-paddingfout
✓ Correct
PKCS#7 (Java PKCS5Padding) selecteren → schone uitvoer

De AES-IV-lengte kopiëren (16 bytes)

Het blok van DES is 8 bytes, dus de IV is ook 8 bytes. Een IV van 32 hex-cijfers uit AES-code plakken faalt op de lengtecontrole; een IV van 8 hex-cijfers wordt met nullen gevuld en verkeerd gelezen.

✗ Fout
IV 00000000000000000000000000000000 (32 hex-cijfers) → fout "de IV moet 8 bytes zijn"
✓ Correct
IV 0000000000000000 (16 hex-cijfers) → geaccepteerd

Verkeerde CBC-IV: alleen het eerste 8-bytes blok is rommel

Multi-blokcijfertekst ontsleutelen met een verkeerde IV geeft geen fout — alleen het eerste 8-bytes blok is rommel, de rest ontsleutelt prima (de IV bereikt alleen blok één, en de paddingcontrole zit in het laatste blok). Zie je "de eerste paar tekens zijn onleesbaar, de rest is prima", controleer dan eerst de IV vóór de sleutel; één-blokcijfertekst breekt in plaats daarvan de padding en gooit bad decrypt.

✗ Fout
Multi-blokcijfertekst + verkeerde IV → eerste 8 bytes onleesbaar, rest normaal — verkeerd gelezen als "verkeerde sleutel"
✓ Correct
Alleen de IV veranderen (sleutel onaangetast) → het eerste blok herstelt, wat bevestigt dat de IV het probleem was

openssl enc -K kapt lange sleutels stilletjes af

-K houdt alleen de bytes die het nodig heeft en drukt een waarschuwing van één regel af die scripts doorslikken. Als de andere kant zegt "de sleutel is deze 48 hex-cijfers" maar in werkelijkheid met de eerste 16 versleutelde, mislukt het ontsleutelen met de volledige sleutel.

✗ Fout
Shell: `-K <49 hex-cijfers>` → "hex string is too long, ignoring excess" verloren in de pijplijn
✓ Correct
Gebruik het gelijkwaardige commando van deze tool om een `-K` met de juiste lengte te genereren, en vergelijk daarna de sleutelbytes met de andere kant

Enkele DES faalt op OpenSSL 3 met "unsupported"

De default provider van OpenSSL 3 heeft geen des-ecb/des-cbc; uitgevoerd zonder extra opties gooit het digital envelope routines::unsupported. Voeg -provider legacy -provider default toe, of gebruik des-ede3 met K‖K‖K (algebraïsch enkele DES).

✗ Fout
openssl enc -des-ecb -K … → Error: unsupported
✓ Correct
openssl enc -des-ecb -provider legacy -provider default -K … (of des-ede3-ecb -K <K‖K‖K>)

Wanneer je online DES-versleuteling nodig hebt

Foutopsporing in berichtcryptografie van legacy-systemen
Bankclearings, POS-gateway MAC-berekening en de versleuteling van oude ERP-interfaces draaien nog op DES/3DES. Plak het bericht en de sleutel hier om te controleren "is de sleutel goed, welke modus, welke padding" zonder een Java- of PHP-omgeving op te zetten.
Migratie van Java / PHP / .NET legacy-code
Vergelijk de uitvoer van Cipher.getInstance("DES/ECB/PKCS5Padding") of openssl_encrypt(..., 'des-ede3-cbc', ...) byte voor byte met deze tool vóór de omschakeling. De 2-key/3-key-vormen worden uit de sleutellengte gedetecteerd, dus er is niets te raden.
Security-audits en onderwijs
Demonstreer het patroonlek van ECB (gelijke plaintextblokken → gelijke cijfertekstblokken), verifieer 3DES-degeneratie (K1=K2=K3 klapt naar enkele DES) en controleer de FIPS 81-vector — standaardvoer in pentestrapporten en cryptografiecolleges.
Voorbeeldcijferteksten genereren voor documentatie
Als een interne wiki of API-doc een reproduceerbaar voorbeeld nodig heeft, bereken het hier met een vaste sleutel en IV — lezers kunnen het met het gelijkwaardige OpenSSL-commando verifiëren, en er wordt geen productiedata rondgeplakt.

DES / 3DES en blokcijfermodi uitgelegd

Blok en sleutel
DES verwerkt 64-bits blokken in 16 Feistel-rondes, elk met een 48-bits subkey afgeleid van de 56-bits mastersleutel via de PC-1/PC-2-compressiepermutaties en geplande rotaties. De acht S-boxen zijn de enige bron van niet-lineariteit; hun ontwerpcriteria zijn nooit volledig gepubliceerd.
De 3DES EDE-assemblage
C = E_K3(D_K2(E_K1(P))). De ontsleuteling in het midden zorgt dat K1=K2=K3 naar enkele DES klapt — een doel van achterwaartse compatibiliteit. De 2-key-vorm heeft 2×56=112 bits nominale sleutelmateriaal, maar een effectieve veiligheidssterkte van circa 80 bits volgens NIST (SP 800-57 Part 1); de 3-key-vorm is nominaal 168 bits met een sterkte van 112 (afgeraden).
ECB en CBC
ECB versleutelt blokken onafhankelijk — gelijke plaintextblokken leveren gelijke cijfertekstblokken op, een zichtbaar patroonlek dat 8-bytes blokken nog erger maken dan AES-ECB. CBC mengt het vorige cijfertekstblok (de IV voor het eerste) in de platte tekst vóór het versleutelen, en was de mainstream keuze voor het bankwezen van het DES-tijdperk. Beide modi produceren cijfertekst die een veelvoud van 8 bytes is.
Padding: PKCS#7 / Zero / None
PKCS#7 voegt n bytes met waarde n toe voor wat ontbreekt (3 tekort → 03 03 03) en vult een vol blok met een hele extra blok — dit is Java's "PKCS5Padding" voor DES. Zero vult met 0x00 en is verliesgevend als de platte tekst echt op 0x00 eindigt. None vereist een exact veelvoud van 8.
De legacy provider van OpenSSL 3
OpenSSL 3 verplaatste enkele DES naar een legacy provider die standaard uit staat: de CLI heeft -provider legacy -provider default nodig, en sommige builds (inclusief de met Node meegeleverde OpenSSL) laten die helemaal weg. 3DES (des-ede/des-ede3) blijft in de default provider. De pure TS-engine van deze tool is niet getroffen.

DES correct gebruiken (legacy-interop)

Gebruik DES nooit voor nieuwe systemen, in geen enkele vorm
De 56 bits van enkele DES zijn brute-forceable; het 64-bits blok draagt de Sweet32 birthday-grens (CVE-2016-2183), en NIST begrenst één key bundle op ≈8 MB (2²⁰ blokken) platte tekst; 2-key is Disallowed, 3-key-versleuteling na 2023. Gebruik AES-256 voor alles wat nieuw is. Deze tool bestaat om legacy-systemen te lezen en veilig te migreren.
Bij legacy-interop eerst byte-identiek
Raak een oud systeem aan? Reproduceer hier eerst de cijfertekst van de oude parameters byte voor byte, en verander dan pas code. Bevestig sleutellengte, modus, padding en IV-bron (vast vs willekeurig, header vs out-of-band) vóór je het algoritme wisselt.
Hergebruik IV's niet, zelfs niet in legacy-systemen
Het hergebruiken van een CBC-IV met dezelfde sleutel onthult de relatie tussen de eerste blokken van twee platte teksten. Als een legacy-protocol een vaste IV verplicht, registreer het dan als defect op de migratielijst — neem het niet over als conventie.
Houd sleutels uit de broncode
Systemen uit het DES-tijdperk hardcoden routinematig sleutels in platte broncode of config. Bij een audit: zet "hoe is de sleutel opgeslagen" naast "welk algoritme" in het rapport — bij de meeste inbreuken was het eerste het werkelijke gat.

FAQ over DES versleutelen/ontsleutelen

DES-ontsleuteling mislukt met "bad decrypt" of een paddingfout — wat controleer ik?
Ontsleutelen vereist dat elke parameter overeenkomt met de versleutelende kant: de sleutelbytes, de sleutellengte (8/16/24), de modus (ECB/CBC), de IV, de padding en of de cijfertekst hex of Base64 is. De twee meest voorkomende valkuilen: onjuiste sleutellengte (een "DES-sleutel" van 32 hex-tekens is 16 bytes — dat is 2-key 3DES, niet enkele DES) en verwarring over de paddingnaam (Java's PKCS5Padding IS PKCS#7 voor DES — kies geen None). Het inklapbare paneel rechts toont een gelijkwaardig OpenSSL-commando voor de huidige instellingen; dat naar de andere kant sturen is de snelste manier om het verschil te vinden.
Hoe lang is een DES-sleutel? En 3DES?
Enkele DES: nominaal 64 bits (8 bytes, 56 effectief — één bit per byte is een pariteitsbit). 3DES bestaat in twee vormen: 2-key (16 bytes, K1‖K2 met K3=K1) en 3-key (24 bytes, K1‖K2‖K3). Het nominale sleutelmateriaal is 112/168 bits, maar de effectieve veiligheidssterkte volgens NIST (SP 800-57 Part 1 Rev.5, tabel 2) is slechts circa 80 en 112 bits — en de 3-key-vorm is bovendien afgeraden. Deze tool herkent de vorm aan het aantal bytes; alles wat geen 8/16/24 is, geeft een fout — CryptoJS en openssl enc -K kappen of vullen met nullen in plaats daarvan, en dat is de nummer één oorzaak van interop-fouten.
Wat is de IV en hoe lang is die bij DES?
De IV is de waarde van 8 bytes die CBC in het eerste blok mengt; ECB gebruikt er geen. Hij moet exact 8 bytes zijn (16 hex-cijfers of 8 ASCII-tekens). Let op: de IV van DES is 8 bytes terwijl die van AES 16 is — de AES-IV-lengte overnemen faalt onmiddellijk. Hergebruik een IV nooit met dezelfde sleutel.
Waar komt Java's DES/ECB/PKCS5Padding in deze tool overeen mee?
ECB-modus + PKCS#7-padding. In de JCE voert "PKCS5Padding" voor DES het generieke PKCS#7-algoritme uit — PKCS#5 definieerde ooit alleen padding voor blokken van 8 bytes, wat toevallig het blok van DES is. De uitvoer van Java Cipher.getInstance("DES/ECB/PKCS5Padding") wordt hier ontsleuteld met ECB + PKCS#7 en een 8-bytes enkele-DES-sleutel. ⚠️ Java's 3DES (DESede) accepteert alleen 24-bytes sleutels — voor de 2-key-vorm moet je K1‖K2 zelf uitbreiden naar K1‖K2‖K1.
Hoe mappen PHP's des-ede3-algoritmenamen door?
PHP leent de namen van OpenSSL: des-ede3-cbc is 3-key 3DES + CBC, des-ede3-ecb is 3-key + ECB; des-ede-cbc is de 2-key-vorm. Een 24-bytes sleutel selecteert 3-key, 16 bytes selecteert 2-key.
Wat zijn de pariteitsbits in een DES-sleutel? Worden ze gecontroleerd?
De laagste bit van elke sleutelbyte is gedefinieerd als pariteitsbit, dus de echte 56-bits sleutel zit in 64 bits. FIPS 46-3 vereist geen controle — OpenSSL, Java en deze tool negeren het; elke 8 bytes werken, en het veranderen van pariteitsbits verandert de cijfertekst niet. .NET is de uitzondering: het normaliseert eerst de pariteit en controleert dan een tabel met zwakke sleutels, dus nul- en andere zwakke sleutels worden door .NET geweigerd terwijl elke andere bibliotheek gewillig versleutelt — een valkuil die alleen afgaat bij het migreren van testsleutels van Java/OpenSSL naar .NET.
Wat gebeurt er in 3DES als K1 = K2?
In 2-key 3DES is K3 altijd gelijk aan K1; als ook K1 = K2, klapt de hele EDE-keten uiteen in enkele DES: E_K(D_K(E_K(P))) = E_K(P). Hetzelfde gebeurt als alle drie de 8-bytes componenten van een 24-bytes sleutel identiek zijn. Deze tool versleutelt nog steeds (interop eerst), maar de echte sterkte is dan enkele-DES 56 bits, geen 3DES.
Is DES nog veilig?
Nee — het is alleen voor legacy-interop. NIST trok enkele DES op 2005-05-19 terug (56-bits sleutels zijn brute-forceable; de Deep Crack van EFF deed het in 56 uur in 1998, 22 uur het jaar erop met distributed.net). SP 800-131A Rev.2 vermeldt 2-key TDEA-versleuteling als Disallowed en 3-key-versleuteling als Disallowed na 2023-12-31 (ontsleuteling blijft "Legacy use", alleen bedoeld om historische data te lezen); SP 800-67 zelf werd op 2024-01-01 ingetrokken. Het kleine 64-bits blok draagt ook de birthday-grens van de Sweet32-klasse (CVE-2016-2183) — NIST begrenst één key bundle op 2²⁰ blokken (≈8 MB) platte tekst. Gebruik AES-256 voor alles wat nieuw is. Deze tool bestaat omdat bankclearings, betalingsgateways en oude Java/.NET-systemen nog steeds berichten uit het DES-tijdperk draaien — ze herstellen begint met ze kunnen lezen.
Waarom wijkt mijn 3DES-resultaat af van Java/PHP?
Controleer op slagingskans: ① sleutellengte — de "32-hex DES-sleutel" van de andere kant is 16 bytes (2-key 3DES), jij ontsleutelde als enkele DES; ② modus — Java's blote "DES" gebruikt standaard ECB, OpenSSL's namen zonder modus-achtervoegsel, des-ede3/des-ede, zijn ECB (het CBC-alias is -des3); PHP's openssl_encrypt vereist een expliciete algoritmenaam — verwarrend is dat het standaard Base64-tekst uitvoert, geen ruwe bytes; ③ padding — oude PHP mcrypt gebruikte vaak Zero padding, JCE gebruikt PKCS#5/#7; ④ codering — hex vs Base64, en hoofdlettergebruik; ⑤ de CryptoJS-wachtwoordval — een string als "sleutel" doorgeven laat key derivation draaien (MD5 + willekeurige salt, uitvoer met voorvoegsel Salted__, elke keer anders), en dat is helemaal niet de ruwe sleutel — de grootste oorzaak van "dezelfde code, elke run een ander resultaat". Deze tool laat je elk van deze omdraaien; het gelijkwaardige OpenSSL-commando rechts kan naar de andere kant worden gestuurd om het te reproduceren.
ECB of CBC — welke moet ik gebruiken?
Wat het systeem waarmee je praat vereist — legacy-interop heeft geen stem. Als je wel kunt kiezen, dan altijd CBC met een willekeurige IV: ECB versleutelt gelijke plaintextblokken naar gelijke cijfertekstblokken, en de kleine 8-bytes blokken van DES laten patronen nog zichtbaarder lekken dan AES-ECB. Bankprotocollen uit het DES-tijdperk gebruiken beide; raadpleeg eerst het protocoldocument.
Werkt dit offline? Worden mijn gegevens geüpload?
Alle berekening gebeurt in je browser (puur TypeScript, nul afhankelijkheden, nul netwerkverzoeken); sleutels en platte tekst verlaten het apparaat nooit. Zodra de pagina geladen is kun je offline gaan en verder werken. Dat is de enige acceptabele vorm voor een tool die sleutels verwerkt.
2-key of 3-key 3DES — welke komt vaker voor in legacy-systemen?
2-key (16 bytes) komt vaker voor: banken en de betaalsector zetten 16-bytes sleutelhardware in voor compatibiliteit, en SP 800-67 hield voor die vorm een aparte (vroegere) deprecatiedatum aan. Dus een "3DES-sleutel" van 32 hex-tekens is hoogstwaarschijnlijk de 2-key-vorm. Deze tool detecteert de vorm automatisch uit het aantal bytes.

Gerelateerde tools

Alle tools bekijken →