Skip to content

Narzędzie do szyfrowania i odszyfrowywania DES / 3DES

Szyfrowanie/deszyfrowanie DES/3DES (2/3 klucze) z ECB/CBC i PKCS#7 w przeglądarce. Długości kluczy (8/16/24 bajty) ścisłe sprawdzane — nigdy po cichu ucinane. Każdy wynik z równoważną komendą OpenSSL.

Bez śledzenia Działa w przeglądarce Bezpłatne
Szyfrowanie odbywa się w całości w Twojej przeglądarce — klucz i wprowadzone dane nigdy nie opuszczają tego urządzenia.

Szyfrogram
Równoważne polecenie OpenSSL
—

Polecenie zawiera wprowadzony klucz.

Wektor testowy DES z FIPS 81

Obliczany w czasie kompilacji przez ten sam silnik, na którym działa ta strona — porównaj ze swoją implementacją DES.
Klucz (pojedynczy DES) 0123456789abcdef
Tekst jawny 4e6f772069732074
Szyfrogram (ECB, bez dopełnienia) 3fa40e8a984d4815
Silnik DES/3DES sprawdza wektor FIPS 81 i został porównany z OpenSSL 3 (des-ede / des-ede3, z weryfikacją pojedynczego DES przez równoważność K‖K‖K) na ponad 3 000 losowych kombinacji w ECB i CBC; równoważne polecenia OpenSSL wykonano w prawdziwym shellu dla porównania. Domyślne ustawienia bibliotek potwierdzono ich uruchomieniem i czytaniem źródeł; zobacz sekcję alternatyw. — Go Tools Security Team · Sep 28, 2026

Napisane i sprawdzone przez twórców narzędzi kryptograficznych. Każdy szyfrogram i liczba bajtów na tej stronie są wyliczane przez silnik narzędzia i potwierdzane testami.

Szybkie odpowiedzi o DES

Długość klucza DES

8 / 16 / 24 bajty Pojedynczy DES: 8 bajtów (56 efektywnych bitów). 3DES: 16 bajtów (2 klucze) lub 24 bajty (3 klucze). Nominalny materiał klucza 112/168 bitów; efektywna siła bezpieczeństwa wg NIST około 80/112 bitów (SP 800-57). To narzędzie rozpoznaje odmianę po liczbie bajtów; inne długości zgłaszają błąd.

Wektor testowy FIPS 81

3fa40e8a984d4815 Klucz 0123456789abcdef, tekst jawny "Now is t" (hex 4e6f772069732074): pojedynczy DES ECB bez dopełnienia zwraca 3fa40e8a984d4815.

Jaka jest długość IV dla DES

8 bajtów 8 bajtów (16 cyfr hex), tylko dla CBC — ECB nie używa żadnego. Inaczej niż 16-bajtowy IV w AES.

Czym jest Java PKCS5Padding

= PKCS#7 Dla DES to PKCS#7 — ten sam algorytm dopełnienia pod historyczną nazwą (PKCS#5 definiował tylko bloki 8-bajtowe, czyli akurat blok DES).

Czy DES jest dziś bezpieczny

Tylko stare systemy Nie. Pojedynczy DES wycofany w 2005; 3DES oznaczony jako przestarzały w SP 800-131A Rev.2 (2023). Tylko interoperacyjność ze starymi systemami — do nowego używaj AES-256.

Czym są DES i 3DES (Data Encryption Standard)?

DES (Data Encryption Standard) to symetryczny szyfr blokowy przyjęty przez amerykański organ normalizacyjny w 1977 roku, oparty na projekcie IBM Lucifer . Przetwarza 64-bitowe (8-bajtowe) bloki z nominalnie 64-bitowym kluczem o 56 efektywnych bitach, przez 16 rund struktury Feistela.

3DES (TDEA, Triple DES) łączy DES trzykrotnie, aby zaradzić krótkiemu kluczowi: C = E_K3(D_K2(E_K1(P))). Środkowy przebieg to odszyfrowywanie, więc przy K1=K2=K3 łańcuch sprowadza się do pojedynczego DES — celowy wybór dla wstecznej kompatybilności. Wariant 2-kluczowy (K3=K1) ma około 112 efektywnych bitów i jest najczęstszą odmianą w starych systemach bankowych.

NIST wycofał pojedynczy DES w 2005 roku (noty FIPS 46-3) i oznaczył 3DES jako przestarzały w SP 800-131A Rev.2 (2023). Jedyną przyczyną, dla której wciąż istnieją, jest interoperacyjność ze starymi systemami: izby rozliczeniowe, bramki płatnicze i systemy Java/.NET/PHP z lat 90. i 2000. wciąż krążą kryptografią ery DES. Nowe projekty powinny używać AES-256.

# 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

Co robi to narzędzie DES

Ścisła walidacja wszystkich trzech długości klucza

8/16/24 bajty jest automatycznie rozpoznawane jako pojedynczy DES / 2-kluczowy / 3-kluczowy 3DES; każda inna długość zgłasza błąd. W przeciwieństwie do cichego ucinania w CryptoJS czy ucinania z ostrzeżeniem w openssl enc -K, złe klucze zawodzą głośno — to właśnie niezgodne klucze najczęściej psują interoperacyjność.

Wektor FIPS 81 liczony w czasie kompilacji

Tabela wektorów testowych na dole jest wyliczana w czasie kompilacji przez ten sam silnik, więc roboty wyszukiwarek czytają wartość referencyjną bez uruchamiania JS, a wypisana liczba nigdy nie rozjedzie się z interaktywną.

Równoważne polecenie OpenSSL

Każda kombinacja parametrów mapuje się na polecenie openssl enc odtwarzające wynik na OpenSSL 3, w tym flagi dostawcy legacy dla pojedynczego DES. Wyślij je drugiej stronie, żeby ustalić, gdzie rozjeżdżają się parametry.

Obsługa tekstu jawnego w GBK

Java getBytes() ery DES na chińskim Windows-JDK zwraca GBK. Oba kierunki tutaj akceptują GBK, więc chiński tekst ze starych systemów nie wymaga wstępnej konwersji.

Całość w przeglądarce

Czysty TypeScript, zero zależności, zero żądań sieciowych. Klucze i tekst jawny nigdy nie opuszczają urządzenia; po załadowaniu działa offline. Jedyna akceptowalna postać narzędzia do obsługi kluczy.

Domyślne ustawienia bibliotek DES w różnych językach

Java (JCE)

"DES" domyślnie ECB + PKCS5Padding

Cipher.getInstance("DES") odpowiada DES/ECB/PKCS5Padding; "DESede" to 3DES, ale akceptuje tylko klucze 24-bajtowe — dla 2 kluczy rozbuduj K1‖K2 do K1‖K2‖K1. PKCS5Padding to PKCS#7 dla DES. Pominięcie IV: przy szyfrowaniu wybierany jest losowy (odczytaj przez getIV()), przy odszyfrowywaniu rzuca „Parameters missing”.

PHP (openssl_encrypt)

des-ede3-cbc / des-ede-cbc

Nazwy algorytmów idą za OpenSSL: des-ede3 to potrójny ECB, des-ede3-cbc to CBC. $options=0 (domyślne) zwraca tekst Base64; OPENSSL_RAW_DATA — surowe bajty. Krótkie klucze są po cichu dopełniane zerami; pusty IV ostrzega, a potem szyfruje zerowym IV.

OpenSSL 3 (openssl enc)

-des-ede3-cbc działa domyślnie

Pojedynczy DES wymaga -provider legacy -provider default (niektóre kompilacje nie mają legacy wcale). -K/-iv przyjmują hex; domyślnie PKCS#7, -nopad wyłącza. -K ucina zbyt długie klucze z ostrzeżeniem.

CryptoJS

Po cichu ucina niedozwolone długości klucza

Surowy klucz 8-bajtowy (WordArray) działa; złe długości są po cichu dopełniane zerami lub ucinane (4 bajty dopełniane, 10 ucinane — bez błędu). Łańcuch „klucz” uruchamia wyprowadzanie klucza (MD5 + losowa sól, wynik z prefiksem Salted__, za każdym razem inny). CBC bez IV to awaria TypeError, a nie zerowy IV. TripleDES z kluczem 8-bajtowym po cichu staje się pojedynczym DES.

.NET

TripleDES domyślnie CBC + PKCS7

TripleDESCryptoServiceProvider: Mode=CBC, Padding=PKCS7, klucz 16 lub 24 bajty (DES przyjmuje 8). .NET odrzuca słabe klucze (parzystość jest najpierw normalizowana, potem sprawdzana względem tabeli słabych kluczy — klucz zerowy rzuca wyjątek), podczas gdy każda inna biblioteka je przyjmuje. Uważaj na to przy migracji.

Go (crypto/des)

Tryb podłącza się jawnie

des.NewCipher daje surowy interfejs blokowy z kluczem 8-bajtowym; sam owijasz go w cipher.NewCBCEncrypter itd. 3DES to des.NewTripleDESCipher (24 bajty). Długość IV jest sprawdzana ostrzej niż w większości języków.

Przykłady szyfrowania DES

Wektor testowy FIPS 81 (pojedynczy DES, ECB, bez dopełnienia)

Klucz 0123456789abcdef, tekst jawny (hex) 4e6f772069732074
3fa40e8a984d4815

Tekstem jawnym jest łańcuch ASCII "Now is t". To podręcznikowy wektor FIPS 81, a tabela na dole strony jest liczona w czasie kompilacji tym samym silnikiem — jeśli Twoja implementacja DES nie zwraca tej wartości dla tych danych, ma błąd.

3DES 2-kluczowy + CBC + PKCS#7: tekst jawny UTF-8 do Base64

Klucz 0123456789abcdeffedcba9876543210 (16 bajtów), IV fedcba9876543210, tekst jawny: Test interoperacyjności DES: zamówienie 20260927-0042
tNMS66mCtXGw63pxOzM9Ll1b78PqrnyBSkmLu9b0oSNzbUxYunUJv8DwGeniYfiT2Lg/o69m9mk=

Klucz 16-bajtowy traktowany jest jako 3DES 2-kluczowy (K1 = pierwsze 8 bajtów, K2 = ostatnie 8, K3 = K1 — układ EDE2). PKCS#7 nad 8-bajtowym blokiem to dokładnie to, co Java nazywa "PKCS5Padding" dla DES: ten sam schemat, różni się tylko rozmiar bloku.

3DES 3-kluczowy + CBC + PKCS#7

Klucz 0123456789abcdef23456789abcdef010456789abcdef012 (24 bajty), IV fedcba9876543210, tekst jawny: hello des
DhDQX9sfxKOirZ8eyqT7Jg==

Klucz 24-bajtowy to pełny trójkluczowy EDE3: C = E_K3(D_K2(E_K1(P))). Z trzech długości klucza tylko ta forma nie ma zdegenerowanego odpowiednika — zarówno wariant 2-kluczowy, jak i K1=K2=K3 sprowadzają się do słabszych szyfrów.

Jak korzystać z tego narzędzia szyfrowania/odszyfrowywania DES

  1. 1

    Wybierz tryb i dopełnienie

    Dla Java DES/ECB/PKCS5Padding wybierz ECB + PKCS#7; dla openssl enc -des-ede3-cbc — CBC + PKCS#7. Stary kod na mcrypt w PHP typowo używa dopełnienia zerowego.

  2. 2

    Wprowadź klucz (8/16/24 bajty)

    Liczba bajtów wybiera szyfr: 8 = pojedynczy DES, 16 = 3DES 2-kluczowy, 24 = 3DES 3-kluczowy. Wybierz Hex, Tekst lub Base64; plakietka pokazuje rzeczywistą liczbę bajtów i rozpoznaną odmianę. Złe długości zgłaszają błąd — nic nigdy nie jest ucinane.

  3. 3

    Dla CBC wprowadź 8-bajtowy IV

    Dla ECB IV nie jest potrzebny. IV musi mieć dokładnie 8 bajtów — 16 cyfr hex, nie 32 jak w AES. Przycisk Losowy generuje świeży.

  4. 4

    Wklej dane i otrzymuj wyniki na żywo

    Szyfrowanie: wprowadź tekst (UTF-8/GBK) lub hex. Odszyfrowywanie: wklej szyfrogram w Base64 lub hex. Wyniki aktualizują się w trakcie pisania, z kopiowaniem jednym kliknięciem i kontrolą w obie strony przyciskiem „Odszyfruj ten szyfrogram”.

  5. 5

    Przekaż równoważne polecenie OpenSSL drugiej stronie

    Rozwijany panel podaje polecenie openssl enc odtwarzające bieżący wynik (z kluczem; polecenia dla pojedynczego DES zawierają -provider legacy -provider default). Wyślij je temu, z kim zapewniasz interoperacyjność — to najszybszy sposób, by ustalić, czyj parametr jest zły.

Dlaczego odszyfrowanie DES się nie udaje

Długość klucza to nie 8/16/24

„Klucz DES” z 32 znaków hex ma 16 bajtów — to 3DES 2-kluczowy, a nie pojedynczy DES. I odwrotnie: klucz 24-bajtowy na systemie tylko pod 2 klucze także nie zadziała.

✗ Niepoprawne
Klucz 0123456789abcdeffedcba9876543210 (16 bajtów) przy wybranym pojedynczym DES → błąd „klucz musi mieć dokładnie 8 bajtów”
✓ Poprawne
Ten sam klucz jako 16 bajtów (3DES 2-kluczowy) → czyste odszyfrowanie

Mylenie nazw PKCS5 i PKCS7

Java pisze „PKCS5Padding” dla DES, ale wykonuje algorytm PKCS#7 (PKCS#5 definiował kiedyś dopełnienie tylko dla bloków 8-bajtowych, czyli bloku DES, więc nazwa się przyjęła). Wybór None lub Zero wobec szyfrogramu JCE zawsze zawodzi.

✗ Niepoprawne
Szyfrogram JCE `DES/ECB/PKCS5Padding` odszyfrowany jako „bez dopełnienia” → śmieci na końcu lub błąd złego dopełnienia
✓ Poprawne
Wybierz PKCS#7 (Java PKCS5Padding) → czysty wynik

Skopiowana długość IV z AES (16 bajtów)

Blok DES ma 8 bajtów, więc i IV ma 8 bajtów. Wklejenie 32-cyfrowego IV hex z kodu AES zawodzi na kontroli długości; 8-cyfrowy IV jest dopełniany zerami i czytany błędnie.

✗ Niepoprawne
IV 00000000000000000000000000000000 (32 cyfry hex) → błąd „IV musi mieć 8 bajtów”
✓ Poprawne
IV 0000000000000000 (16 cyfr hex) → zaakceptowany

Zły IV w CBC: śmieci tylko w pierwszym 8-bajtowym bloku

Odszyfrowanie wieloblokowego szyfrogramu ze złym IV nie zgłasza błędu — śmieciem jest tylko pierwszy 8-bajtowy blok, reszta odszyfrowuje się normalnie (IV dociera tylko do pierwszego bloku, a kontrola dopełnienia mieszka w ostatnim). Widzisz „pierwsze znaki zniekształcone, reszta w porządku” — sprawdź IV, zanim klucz; jednoblokowy szyfrogram zamiast tego psuje dopełnienie i rzuca bad decrypt.

✗ Niepoprawne
Szyfrogram wieloblokowy + zły IV → pierwsze 8 bajtów zniekształcone, reszta normalna — odczytane jako „zły klucz”
✓ Poprawne
Zmień tylko IV (klucz bez zmian) → pierwszy blok wraca do normy, czyli winne był IV

openssl enc -K po cichu ucina zbyt długie klucze

-K zachowuje tylko potrzebne bajty i wypisuje jednoosobowe ostrzeżenie, które skrypty połykają. Gdy druga strona mówi „klucz to te 48 cyfr hex”, ale w rzeczywistości szyfrowała pierwszymi 16, odszyfrowanie pełnym kluczem się nie uda.

✗ Niepoprawne
W shellu: `-K <49 cyfr hex>` → „hex string is too long, ignoring excess” ginie w potoku
✓ Poprawne
Wygeneruj równoważnym poleceniem tego narzędzia `-K` o właściwej długości, a potem porównaj bajty klucza z drugą stroną

Pojedynczy DES zawodzi na OpenSSL 3 z „unsupported”

Dostawca domyślny OpenSSL 3 nie ma des-ecb/des-cbc; nagie uruchomienie rzuca digital envelope routines::unsupported. Dodaj -provider legacy -provider default albo użyj des-ede3 z K‖K‖K (algebraicznie pojedynczy DES).

✗ Niepoprawne
openssl enc -des-ecb -K … → Błąd: unsupported
✓ Poprawne
openssl enc -des-ecb -provider legacy -provider default -K … (albo des-ede3-ecb -K <K‖K‖K>)

Kiedy potrzebujesz szyfrowania DES online

Debugowanie kryptografii komunikatów starych systemów
Izby rozliczeniowe, wyliczanie MAC w bramkach POS i szyfrowanie starych interfejsów ERP wciąż działają na DES/3DES. Wklej tu komunikat i klucz, aby sprawdzić „czy klucz jest dobry, jaki tryb, jakie dopełnienie”, nie stawiając środowiska Java ani PHP.
Migracja starego kodu Java / PHP / .NET
Porównaj wynik Cipher.getInstance("DES/ECB/PKCS5Padding") albo openssl_encrypt(..., 'des-ede3-cbc', ...) z tym narzędziem bajt po bajcie przed przełączeniem. Odmiany 2-kluczowe/3-kluczowe są rozpoznawane po długości klucza, więc nie ma nic do zgadywania.
Audyty bezpieczeństwa i nauczanie
Zademonstruj wyciek wzorców w ECB (równe bloki tekstu jawnego → równe bloki szyfrogramu), zweryfikuj degenerację 3DES (K1=K2=K3 sprowadza się do pojedynczego DES) i sprawdź wektor FIPS 81 — standard w raportach pentestowych i kursach kryptografii.
Generowanie przykładowych szyfrogramów do dokumentacji
Gdy wewnętrzna wiki lub dokumentacja API potrzebuje odtwarzalnego przykładu, policz go tutaj ze stałym kluczem i IV — czytelnicy zweryfikują go równoważnym poleceniem OpenSSL, a dane produkcyjne nie krążą po dokumentach.

DES / 3DES i tryby szyfrów blokowych w praktyce

Blok i klucz
DES przetwarza 64-bitowe bloki przez 16 rund Feistela, każda z 48-bitowym podkluczem wyprowadzanym z 56-bitowego klucza głównego permutacjami kompresji PC-1/PC-2 i zaplanowanymi przesunięciami. Osiem S-boxów to jedyne źródło nieliniowości; ich kryteria projektowe nigdy nie zostały w pełni opublikowane.
Układ EDE w 3DES
C = E_K3(D_K2(E_K1(P))). Odszyfrowanie w środku sprawia, że przy K1=K2=K3 łańcuch sprowadza się do pojedynczego DES — cel wstecznej kompatybilności. Wariant 2-kluczowy ma 2×56=112 bitów nominalnego materiału klucza, ale jego efektywna siła bezpieczeństwa to około 80 bitów wg NIST (SP 800-57 Part 1); wariant 3-kluczowy ma nominalnie 168 bitów przy sile 112 bitów (odradzany).
ECB i CBC
ECB szyfruje bloki niezależnie — równe bloki tekstu jawnego dają równe bloki szyfrogramu, widoczny wyciek wzorców, który 8-bajtowe bloki czynią gorszym niż w AES-ECB. CBC miesza poprzedni blok szyfrogramu (dla pierwszego IV) z tekstem jawnym przed szyfrowaniem i był wyborem głównego nurtu bankowości ery DES. Oba tryby dają szyfrogram będący wielokrotnością 8 bajtów.
Dopełnienie: PKCS#7 / zerowe / brak
PKCS#7 dodaje n bajtów o wartości n, ilekolwiek brakuje (brakuje 3 → 03 03 03), a pełny blok dopełnia całym dodatkowym blokiem — to jest Java „PKCS5Padding” dla DES. Dopełnienie zerowe wypełnia 0x00 i traci dane, gdy tekst jawny naprawdę kończy się na 0x00. Brak dopełnienia wymaga dokładnej wielokrotności 8.
Dostawca legacy w OpenSSL 3
OpenSSL 3 przeniósł pojedynczy DES do dostawcy legacy, domyślnie wyłączonego: CLI wymaga -provider legacy -provider default, a niektóre kompilacje (w tym OpenSSL dołączony do Node) nie mają go wcale. 3DES (des-ede/des-ede3) pozostaje w dostawcy domyślnym. Czysto-TS-owy silnik tego narzędzia tego nie dotyczy.

Najlepsze praktyki użycia DES (interoperacyjność ze starymi systemami)

Nigdy nie używaj DES w nowych systemach, w żadnej odmianie
56 bitów pojedynczego DES poddaje się atakom brute-force; 64-bitowy blok niesie granicę urodzinową Sweet32 (CVE-2016-2183), a NIST ogranicza jeden zestaw kluczy do ≈8 MB (2²⁰ bloków) tekstu jawnego; 2 klucze — niedozwolone, 3 klucze — szyfrowanie niedozwolone po 2023 roku. Do wszystkiego nowego używaj AES-256. To narzędzie istnieje, aby odczytywać i bezpiecznie migrować stare systemy.
W interoperacyjności najpierw identyczność bajt po bajcie
Zabierając się za stary system, najpierw odtwórz tutaj szyfrogram ze starymi parametrami bajt po bajcie, a dopiero potem zmieniaj kod. Potwierdź długość klucza, tryb, dopełnienie i źródło IV (stały czy losowy, w nagłówku czy poza strumieniem) przed zmianą algorytmu.
Nie używaj IV ponownie, nawet w starych systemach
Ponowne użycie IV w CBC z tym samym kluczem ujawnia relację między pierwszymi blokami dwóch tekstów jawnych. Jeśli stary protokół wymusza stały IV, odnotuj to jako defekt na liście migracji — nie dziedzicz tego jako konwencji.
Trzymaj klucze z dala od kodu źródłowego
Systemy ery DES rutynowo zaszywają klucze na stałe w kodzie źródłowym czy konfiguracji. Audytując taki system, umieść w raporcie „jak przechowywany jest klucz” obok „jaki algorytm” — w większości włamań pierwsze z nich było prawdziwą dziurą.

Szyfrowanie i odszyfrowywanie DES — często zadawane pytania

Odszyfrowanie DES kończy się błędem „bad decrypt” lub błędem dopełnienia — co sprawdzić?
Odszyfrowywanie wymaga zgodności każdego parametru ze stroną szyfrującą: bajtów klucza, długości klucza (8/16/24), trybu (ECB/CBC), IV, dopełnienia oraz formatu szyfrogramu — hex czy Base64. Dwie najczęstsze pułapki: niezgodna długość klucza („klucz DES” z 32 znaków hex ma 16 bajtów — to 3DES 2-kluczowy, a nie pojedynczy DES) i mylenie nazw dopełnienia (Java PKCS5Padding to PKCS#7 dla DES — nie wybieraj None). Rozwijany panel po prawej pokazuje równoważne polecenie OpenSSL dla bieżących ustawień; wyślij je drugiej stronie — to najszybszy sposób na znalezienie rozbieżności.
Jaka jest długość klucza DES? A 3DES?
Pojedynczy DES: nominalnie 64 bity (8 bajtów, 56 efektywnych — jeden bit w każdym bajcie to bit parzystości). 3DES występuje w dwóch odmianach: 2-kluczowej (16 bajtów, K1‖K2 z K3=K1) i 3-kluczowej (24 bajty, K1‖K2‖K3). Nominalny materiał klucza to 112/168 bitów, ale efektywna siła bezpieczeństwa wg NIST (SP 800-57 Part 1 Rev.5, tabela 2) to zaledwie około 80 i 112 bitów — a wariant 3-kluczowy jest dodatkowo odradzany. To narzędzie rozpoznaje odmianę po liczbie bajtów; każda inna długość zgłasza błąd — CryptoJS i openssl enc -K po cichu obcinają lub dopełniają zerami, co jest przyczyną numer jeden problemów z interoperacyjnością.
Czym jest IV i jaką ma długość dla DES?
IV to 8-bajtowa wartość, którą CBC miesza z pierwszym blokiem; ECB go nie używa. Musi mieć dokładnie 8 bajtów (16 cyfr hex lub 8 znaków ASCII). Zwróć uwagę: IV dla DES ma 8 bajtów, a dla AES 16 — skopiowanie długości IV z AES kończy się natychmiastowym błędem. Nigdy nie używaj ponownie IV z tym samym kluczem.
Czemu odpowiada Java DES/ECB/PKCS5Padding w tym narzędziu?
Tryb ECB + dopełnienie PKCS#7. W JCE „PKCS5Padding” dla DES wykonuje ogólny algorytm PKCS#7 — PKCS#5 definiował kiedyś dopełnienie tylko dla 8-bajtowych bloków, którym akurat jest blok DES. Wynik Java Cipher.getInstance("DES/ECB/PKCS5Padding") odszyfruje się tutaj z ECB + PKCS#7 i 8-bajtowym kluczem pojedynczego DES. ⚠️ 3DES w Javie (DESede) akceptuje tylko klucze 24-bajtowe — dla odmiany 2-kluczowej musisz sam rozbudować K1‖K2 do K1‖K2‖K1.
Jak mapują się nazwy algorytmów des-ede3 w PHP?
PHP zapożycza nazwy OpenSSL: des-ede3-cbc to 3DES 3-kluczowy + CBC, des-ede3-ecb to 3 klucze + ECB; des-ede-cbc to odmiana 2-kluczowa. Klucz 24-bajtowy wybiera 3 klucze, 16 bajtów — 2 klucze.
Czym są bity parzystości w kluczu DES? Czy są sprawdzane?
Najmłodszy bit każdego bajtu klucza jest zdefiniowany jako bit parzystości, więc prawdziwy 56-bitowy klucz „siedzi” w środku 64 bitów. FIPS 46-3 nie wymaga jego sprawdzania — OpenSSL, Java i to narzędzie go ignorują; działają dowolne 8 bajtów, a zmiana bitów parzystości nie zmienia szyfrogramu. Wyjątkiem jest .NET: najpierw normalizuje parzystość, a potem porównuje z tabelą słabych kluczy, więc klucze zerowe i inne słabe są w .NET odrzucane, podczas gdy każda inna biblioteka szyfruje je bez zastanowienia — pułapka, która strzela tylko przy przenoszeniu kluczy testowych z Java/OpenSSL na .NET.
Co się dzieje w 3DES, gdy K1 = K2?
W 3DES 2-kluczowym K3 zawsze równa się K1; jeśli także K1 = K2, cały łańcuch EDE sprowadza się do pojedynczego DES: E_K(D_K(E_K(P))) = E_K(P). To samo dzieje się, gdy wszystkie trzy 8-bajtowe części klucza 24-bajtowego są identyczne. To narzędzie nadal szyfruje (interoperacyjność przede wszystkim), ale realna siła to wtedy 56 bitów pojedynczego DES, a nie 3DES.
Czy DES jest wciąż bezpieczny?
Nie — służy wyłącznie do interoperacyjności ze starymi systemami. NIST wycofał pojedynczy DES 19.05.2005 (klucz 56-bitowy poddaje się atakom brute-force; EFF Deep Crack zrobił to w 56 godzin w 1998 roku, a rok później w 22 godziny z distributed.net). SP 800-131A Rev.2 oznacza szyfrowanie TDEA 2-kluczowym jako niedozwolone, a szyfrowanie 3-kluczowe jako niedozwolone po 31.12.2023 (odszyfrowywanie pozostaje w statusie „Legacy use” — tylko do odczytu danych historycznych); sam SP 800-67 został wycofany 01.01.2024. Mały 64-bitowy blok niesie też granicę urodzinową klasy Sweet32 (CVE-2016-2183) — NIST ogranicza jeden zestaw kluczy do 2²⁰ bloków (≈8 MB) tekstu jawnego. Do wszystkiego nowego używaj AES-256. To narzędzie istnieje, bo izby rozliczeniowe, bramki płatnicze i stare systemy Java/.NET wciąż krążą komunikaty ery DES — a naprawianie zaczyna się od umiejętności ich odczytania.
Dlaczego mój wynik 3DES różni się od Java/PHP?
Sprawdzaj w kolejności częstotliwości: ① długość klucza — „klucz DES z 32 znaków hex” u drugiej strony to 16 bajtów (3DES 2-kluczowy), a Ty odszyfrowywałeś jako pojedynczy DES; ② tryb — nagie "DES" w Javie domyślnie ECB, nazwy OpenSSL bez przyrostka trybu, des-ede3/des-ede, to ECB (alias CBC to -des3); openssl_encrypt w PHP wymaga jawnej nazwy algorytmu — mylące jest to, że domyślnie zwraca tekst Base64, a nie surowe bajty; ③ dopełnienie — stary mcrypt w PHP często używał dopełnienia zerowego, JCE — PKCS#5/#7; ④ kodowanie — hex kontra Base64 i wielkość liter; ⑤ pułapka hasła w CryptoJS — podanie łańcucha jako „klucza” uruchamia wyprowadzanie klucza (MD5 + losowa sól, wynik z prefiksem Salted__, za każdym razem inny), co w ogóle nie jest surowym kluczem — główna przyczyna sytuacji „ten sam kod, za każdym razem inny wynik”. To narzędzie pozwala przełączać każdy parametr; równoważne polecenie OpenSSL po prawej można wysłać drugiej stronie, żeby to odtworzyć.
ECB czy CBC — którego użyć?
Takiego, jakiego wymaga system, z którym się komunikujesz — przy interoperacyjności ze starymi systemami nie ma się co spierać. Jeśli jednak masz wybór, zawsze CBC z losowym IV: ECB zamienia równe bloki tekstu jawnego w równe bloki szyfrogramu, a małe 8-bajtowe bloki DES wyciekają wzorcami jeszcze wyraźniej niż AES-ECB. Protokoły bankowe ery DES używają obu; najpierw sprawdź dokumentację protokołu.
Czy to działa offline? Czy moje dane są wysyłane?
Wszystkie obliczenia dzieją się w Twojej przeglądarce (czysty TypeScript, zero zależności, zero żądań sieciowych); klucze i tekst jawny nigdy nie opuszczają urządzenia. Po załadowaniu strony możesz przejść offline i pracować dalej. To jedyna akceptowalna postać narzędzia do obsługi kluczy.
3DES 2-kluczowy czy 3-kluczowy — który częściej występuje w starych systemach?
Częstszy jest 2-kluczowy (16 bajtów): banki i branża płatnicza wdrażały sprzęt z kluczami 16-bajtowymi dla kompatybilności, a SP 800-67 wyznaczył mu osobną (wcześniejszą) datę wycofania. Zatem „klucz 3DES” z 32 znaków hex to najpewniej odmiana 2-kluczowa. To narzędzie rozpoznaje odmianę po liczbie bajtów automatycznie.

Powiązane narzędzia

Zobacz wszystkie narzędzia →

Narzędzie do odszyfrowywania AES — OpenSSL i CryptoJS

Narzędzia bezpieczeństwa

Odszyfruj AES online — GCM/CBC/CTR, hasło lub klucz surowy, automatyczne wykrywanie formatu OpenSSL i CryptoJS „U2FsdGVkX1”. 100% w przeglądarce, klucze nigdy jej nie opuszczają.

Narzędzie do szyfrowania AES — GCM, CBC i CTR

Narzędzia bezpieczeństwa

Darmowe szyfrowanie AES online — AES-128/192/256, GCM/CBC/CTR, hasło (PBKDF2) lub klucz surowy. Działa w 100% w przeglądarce; nic nie jest przesyłane.

Generator i weryfikator skrótów bcrypt

Narzędzia bezpieczeństwa

Generuj i weryfikuj skróty bcrypt haseł online — regulowany koszt, prefiksy $2b$/$2a$/$2y$. W 100% w przeglądarce; Twoje hasło nigdy nie jest wysyłane.

Kalkulator sumy kontrolnej CRC

Narzędzia bezpieczeństwa

Wklej hex albo tekst i policz naraz wszystkie 63 warianty CRC-8, CRC-16 i CRC-32. Suma kontrolna z urządzenia się nie zgadza? Wpisz ją, a narzędzie wskaże wariant: MODBUS, CCITT-FALSE, XMODEM, KERMIT. Wszystko lokalnie.

Generator HMAC i weryfikator podpisów

Narzędzia bezpieczeństwa

Darmowy generator i weryfikator HMAC online. Oblicz HMAC-SHA256/SHA1/SHA384/SHA512 z kluczem Tekst, Hex lub Base64 i wynikiem Hex/Base64/Base64URL. 100% w Twojej przeglądarce — klucze nigdy nie opuszczają strony.

Dekoder JWT

Narzędzia bezpieczeństwa

Dekoduj JWT online darmowym dekoderem JWT. Sprawdź header, payload, signature, claims i wygaśnięcie. W 100% w przeglądarce — token nie opuszcza urządzenia.