DES / 3DES / RC4 / Blowfish versleutelen & ontsleutelen

Versleutel of ontsleutel met de vier klassieke cijfers die nog steeds in oude bestanden, back-ups en protocollen voorkomen — DES en 3DES in ECB of CBC, RC4 (ARCFOUR) als stroomcijfer, en Blowfish met sleutels tot 56 bytes. Geverifieerd tegen FIPS 46-3, Schneiers gepubliceerde Blowfish-vectoren en RFC 6229. Alles draait lokaal in uw browser — er wordt niets geüpload. Gebruik voor moderne toepassingen AES-GCM.
Deze cijfers zijn hier voor compatibiliteit, niet voor nieuw werk. DES werd in 2005 ingetrokken, 3DES in 2023, RC4 is sinds 2015 verboden in TLS (RFC 7465), en het 64-bits blok van Blowfish bereikt zijn verjaardagsgrens na ongeveer 32 GiB aan gegevens onder één sleutel. Gebruik voor alles nieuws AES-GCM.
Richting: Cijfer: Modus: Uitvoer:
DES = de Data Encryption Standard uit 1977: blokken van 64 bits, effectieve sleutel van 56 bits. Ingetrokken, maar nog steeds te vinden in oude back-ups, pincodeblokken (bank) en Kerberos v4. Sleutel moet precies 8 bytes zijn.
Hex accepteert spaties, dubbele punten en 0x-voorvoegsels. DES negeert de pariteitsbit van elke sleutelbyte.
Blokcijfers vullen aan met PKCS#7; RC4 vult nooit aan.
Sleutellengtes die deze pagina accepteert
CijferSleutelBlokStatus
DESprecies 8 bytes (56 effectieve bits)64 bitsingetrokken in 2005 (NIST SP 800-131A)
3DES-EDE3precies 24 bytes (112 effectieve bits)64 bitsniet toegestaan na 2023 (SP 800-131A r2)
3DES-EDE2precies 16 bytes (112 effectieve bits)64 bitshetzelfde als EDE3, zwakkere verouderde optie
RC4 / ARCFOUR1..256 bytesstroomverboden in TLS sinds 2015 (RFC 7465)
Blowfish4..56 bytes64 bitsonkraakbaar, maar gebonden aan het 64-bits blok; gebruik Twofish/AES
De effectieve sleutelgrootte is kleiner dan de ruwe grootte, omdat DES één bit van elke byte als pariteit gebruikt: een ruwe sleutel van 64 bits draagt slechts 56 sleutelbits, en 3DES met drie onafhankelijke sleutels draagt 112 (meet-in-the-middle).
OpenSSL-interoperabiliteit — OpenSSL 3 heeft deze cijfers naar de legacy-provider verplaatst; voeg -provider legacy toe als het uwe weigert. Opdrachtregelequivalenten van deze pagina:
openssl enc -des-ecb -K 133457799BBCDFF1 -in msg.bin -out msg.enc
openssl enc -des3 -K <48 hex> -iv <16 hex> -in msg.bin -out msg.enc (3DES-CBC)
openssl enc -rc4 -K 4b6579 -in msg.bin -out msg.enc  /  -bf-cbc voor Blowfish-CBC.
Ontsleutelen met -d. -K neemt een ruwe hexsleutel, -k een wachtwoord (vermijd het — de KDF verschilt van alles op deze pagina).
Zelftest
Voert de paginaengine opnieuw uit tegen gepubliceerde en onafhankelijk gegenereerde vectoren: het uitgewerkte DES-voorbeeld uit FIPS 46-3, door OpenSSL gegenereerde 3DES EDE2/EDE3-cijfertekst, de Schneier-Blowfish-vectoren, RC4-testvectoren uit RFC 6229 en het klassieke "Key/Plaintext"-voorbeeld, heen-en-weer-tests in elke modus, en negatieve tests (verkeerde sleutelgrootte, cijfertekst die geen veelvoud van het blok is, moet mislukken). Er wordt niets ergens naartoe verzonden.
DES, 3DES, RC4 en Blowfish van begin tot eind uitgelegd
In één zin: deze vier cijfers waren de werkpaarden van de jaren negentig — DES en de driedubbele-versleutelingsomweg 3DES, het stroomcijfer RC4, en Blowfish — en elk daarvan is nu uitgefaseerd of afgekeurd, alleen nog in leven gehouden door oude bestanden, oude hardware en oude protocollen die nog moeten worden gelezen.
DES: de standaard uit 1977 waarmee het allemaal begon

Wat het is. De Data Encryption Standard (FIPS 46, 1977) is een Feistel-cijfer met 16 rondes op blokken van 64 bits met een sleutel van 56 bits (opgeslagen in 8 bytes, omdat één bit van elke byte een pariteitscontrole is). Het werd door IBM ontworpen met inbreng van de NSA, werd twee decennia lang de Amerikaanse standaard, en werd in 1998 door beleid gebroken toen de EFF-machine Deep Crack een sleutel in 56 uur kraakte met hardware van $250.000. NIST heeft het voor versleuteling in 2005 ingetrokken.

Waarom de pariteitsbit verwarrend is voor sleutellengtes. Elk achtste bit van een DES-sleutel wordt berekend uit de andere zeven, dus een sleutel van 8 bytes bevat slechts 56 onafhankelijke bits — daarom ziet u zowel "64-bit sleutel" als "56-bit sleutel" voor hetzelfde cijfer. 3DES erft dit: 24 ruwe bytes = 168 bits ruw = 112 effectief (meet-in-the-middle haalt de rest weg).

Waar u het nog tegenkomt. Pincodeblokken bij banken (ISO 9564), sommige Kerberos v4-domeinen, oude back-uparchieven en smartcards. Als een systeem vandaag DES eist, werkt het ofwel samen met hardware uit de jaren negentig, of het is simpelweg onveilig.

3DES: versleutelen, ontsleutelen, versleutelen

De truc. Triple-DES voert DES drie keer uit over elk blok: EDE3 gebruikt drie verschillende sleutels (C = Ek3(Dk2(Ek1(P)))); de ontsleutelstap in het midden bestaat zodat een 3DES-implementatie enkel DES kan emuleren door k1=k2 in te stellen. EDE2 gebruikt slechts twee sleutels (k1=k3), wat 112 effectieve bits geeft. De constructie was een snelle oplossing die de beveiliging van een al aangevallen cijfer verdrievoudigde, zonder een nieuw cijfer te bedenken.

Waarom het toch stierf. Twee problemen: het is traag (drie volledige DES-passes per blok, ~1/20 van de snelheid van AES) en het hield het 64-bits blok. Met 32 GiB aan gegevens onder één sleutel (de verjaardagsgrens van 232 blokken) worden blokbotsingen waarschijnlijk genoeg om platte-tekststructuur te lekken — de Sweet32-aanval (2016) demonstreerde dit tegen TLS 3DES-sessies. NIST verbood 3DES-versleuteling na 2023 (SP 800-131A r2); PCI DSS vereist het uitfaseren ervan in betalingssystemen.

RC4 / ARCFOUR: het stroomcijfer van het vroege web

Hoe het werkt. RC4 (Ron's Code 4, ontworpen in 1987, uitgelekt in 1994) is een stroomcijfer: de sleutel stelt een permutatie van 256 bytes samen (KSA), waarna de permutatie een pseudowillekeurige bytestroom uitvoert (PRGA) die met het bericht wordt geXOR't. Geen padding, geen blokgrootte, elke berichtlengte, in software triviaal snel — waarom het in de jaren negentig SSL/TLS en WEP domineerde. "ARCFOUR" is de vrije naam die de meeste open-sourceprojecten gebruiken.

Hoe het brak. Fluhrer-Mantin-Shamir (2001) toonde aan dat de eerste bytes van de sleutelstroom bevooroordeeld zijn — fataal in WEP, waarbij de constructie per pakket die bytes aan aanvallers voerde. Latere bias-aanvallen (2013, AlFardan et al.) herstelden platte tekst uit door RC4 beveiligde TLS-sessies met miljoenen verbindingen. RFC 7465 (2015) verbiedt RC4 in TLS volledig.

De klassieke vector. Sleutel "Key" (3 bytes), bericht "Plaintext" geeft cijfertekst bbf316e8d940af0ad3 — probeer het RC4-voorbeeld en vergelijk. De zelftest van deze pagina controleert ook de RFC 6229-sleutelstroom voor de 40-bits sleutel 01 02 03 04 05: b2396305f03dc027ccc3524a0a1118a8.

Blowfish: onkraakbaar, maar beperkt door het blok

Wat het is. Bruce Schneiers Feistel-cijfer uit 1993: blokken van 64 bits, sleutels van 32 tot 448 bits (4..56 bytes), 16 rondes, en een beroemd sleutelschema dat Blowfish zelf 521 keer uitvoert om de subsleutels te bouwen — wat de sleutelinstelling traag maakt, maar brute-force-pogingen ook duur. Er is geen praktische cryptanalyse die volledig uitgevoerd Blowfish breekt.

Waarom het toch op deze pagina staat. Het 64-bits blok is het probleem, niet het algoritme: boven ongeveer 32 GiB onder één sleutel lekken verjaardagsbotsingen gegevens (dezelfde grens als 3DES, Sweet32-achtig). Schneier zelf beveelt zijn opvolger Twofish (een AES-finalist) of AES aan voor alles nieuws. Blowfish leeft voort in bcrypt — het sleutelschema van de wachtwoordhash is Blowfish — wat prima is, omdat hashing kleine invoer gebruikt, geen gigabytes.

De klassieke vectoren. Een sleutel die volledig uit nullen bestaat en een platte tekst die volledig uit nullen bestaat, versleutelen naar 4ef997456198dd78 (eerste blok van de voorbeelduitvoer); sleutel "abcdefghijklmnopqrstuvwxyz" op "BLOWFISH" geeft 324ed0fef413a203. Beide komen uit Schneiers gepubliceerde vectorenbestand en worden door de zelftest gecontroleerd.

Veelgemaakte fouten
  • Gebruik hiervan voor nieuwe gegevens. Elk cijfer op deze pagina is afgekeurd, behalve Blowfish (dat beperkt is door de blokgrootte). De juiste moderne keuze is AES-GCM — zie AES versleutelen / ontsleutelen.
  • DES-sleutel uit een wachtwoord. Een wachtwoord van 8 tekens is geen 56 willekeurige bits; het is een paar bits entropie per teken. Oude systemen deden precies dit, en dat is de meest voorkomende reden waarom "DES-versleutelde" archieven binnen minuten door woordenboekaanvallen vallen.
  • Een IV hergebruiken in CBC. Het eerste blok lekt dan de gelijkheid van platte tekst tussen berichten onder dezelfde sleutel. De knop Willekeurige IV bestaat om die reden.
  • Een RC4-sleutelstroom hergebruiken. RC4 XOR't dezelfde sleutelstroom voor dezelfde sleutel: twee berichten met één sleutel versleutelen is een two-time pad — XOR de cijferteksten en beide platte teksten vallen eruit. De fatale fout van WEP was precies een constructie met hergebruik van de sleutelstroom.
  • Aannemen dat "het ontsleutelt, dus het klopt". ECB/CBC hier valideren bij ontsleutelen alleen de padding — een verkeerde sleutel levert meestal rommel op die toch kan worden ge-unpad. Er is in geen enkele legacymodus een integriteitscontrole; als u die nodig hebt, hebt u AES-GCM nodig, niet deze.
  • 3DES als "168-bit" tellen. De ruwe sleutel is 168 bits, maar de effectieve sterkte is 112 — meet-in-the-middle reduceert driedubbele versleuteling tot dubbel plus een beetje, precies zoals bij de voorlopers van 3DES.
Veelgestelde vragen

Waarom een tool voor gebroken cijfers bewaren? Compatibiliteit. Versleutelde back-ups, geëxporteerde bestanden in oude formaten, opgevangen protocoltraces, CTF-uitdagingen en hardware die niet kan worden bijgewerkt, spreken al deze cijfers nog steeds. Oude gegevens lezen is legitiem; nieuwe gegevens ermee schrijven is dat niet.

Mijn DES-sleutel heeft oneven pariteit / niet-ASCII-bytes. DES negeert de pariteitsbit van elke sleutelbyte, dus de effectieve sleutel zijn hoe dan ook de andere 56 bits. Deze pagina accepteert elke 8 bytes en dwingt geen even pariteit af.

Waarom ziet ontsleutelde tekst er soms uit als rommel? Verkeerde sleutel, verkeerde modus, verkeerde IV, of de gegevens zijn niet op de manier versleuteld die u veronderstelt. Zonder authenticatietag is er geen duidelijke fout "verkeerde sleutel" — de paddingcontrole is de enige aanwijzing, en die kan toevallig slagen (1 op 256 keer).

Is Blowfish veilig voor mijn bestanden? Voor kleine bestanden, cryptografisch ja (geen praktische breuk). Voor alles op gigabyte-schaal onder één sleutel, nee — de verjaardagsgrens van het 64-bits blok gaat over de hoeveelheid gegevens, niet over de sleutelsterkte. Twofish of AES vermijden het probleem.

En de 72-byte Blowfish-sleutels die ik ergens zag? Sommige implementaties accepteren tot 72 bytes, maar Schneiers referentie gebruikt 56, en bytes daarboven geven in het standaardschema geen extra diffusie. Deze pagina volgt de referentie: 4..56 bytes.