Narzędzie do odszyfrowywania AES — OpenSSL i CryptoJS
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ą.
Opcje zaawansowane
Nigdy nie używaj ponownie IV z tym samym kluczem. Pozostaw puste, aby wygenerować bezpieczny, losowy IV.
Jak działa odszyfrowywanie AES
Odszyfrowywanie AES jest dokładną odwrotnością szyfrowania: ten sam symetryczny klucz, który wymieszał dane, uruchamia rundy szyfru w odwrotnej kolejności, aby odzyskać oryginalne bajty. Ponieważ AES jest symetryczny, nie istnieje osobny „klucz do odszyfrowania” — musisz podać identyczny klucz lub hasło, tryb i IV, których użyto do zaszyfrowania. Ustaw parametry poprawnie, a tekst jawny wróci bajt po bajcie; pomyl choć jeden, a otrzymasz błąd lub bezsensowne dane.
Aby poprawnie odszyfrować, cztery rzeczy muszą dokładnie odpowiadać szyfrowaniu: klucz (lub hasło wraz z ustawieniami funkcji wyprowadzania klucza), tryb pracy (GCM, CBC lub CTR), IV lub nonce oraz — w przypadku GCM — tag uwierzytelniający. Pomiń którekolwiek z nich, a wynikiem będzie albo twardy błąd (błąd uwierzytelniania GCM, błąd dopełnienia CBC), albo ciche bezsensowne dane (CTR, lub CBC z niewłaściwym IV). To narzędzie samo odczytuje sól, IV i tag z szyfrogramu, gdy są w nim zapakowane, i diagnozuje awarię, gdy coś się nie zgadza.
Szyfrogram pojawia się w kilku różnych postaciach, a to narzędzie rozumie trzy z nich. Format 1 to nasz samowystarczalny układ z hasłem: 16-bajtowa sól, potem IV, a następnie szyfrogram (z dołączonym tagiem GCM w trybie GCM) — odszyfruj go, mając tylko hasło. Format 2 to układ z surowym kluczem: IV poprzedzający szyfrogram, albo „goły” szyfrogram, w którym IV podajesz osobno. Format 3 to układ OpenSSL, tworzony przez polecenie openssl enc oraz przez CryptoJS.
Warto rozpoznawać ten format OpenSSL na pierwszy rzut oka. Zaczyna się od 8 bajtów ASCII Salted__, po których następuje 8-bajtowa sól, a potem szyfrogram, a gdy całość jest zakodowana w Base64, te pierwsze bajty zawsze renderują się jako prefiks U2FsdGVkX1. Jeśli więc szyfrogram, który dostałeś, zaczyna się od U2FsdGVkX1, niemal na pewno został utworzony poleceniem openssl enc lub wywołaniem CryptoJS AES.encrypt(text, passphrase). CryptoJS wyprowadza swój klucz za pomocą przestarzałej funkcji EVP_BytesToKey, używając pojedynczego przebiegu MD5, podczas gdy nowoczesny openssl używa PBKDF2 — dlatego wybranie właściwej funkcji wyprowadzania klucza to cała gra przy odszyfrowywaniu takich danych. Jeśli Twoje wejście jest w Base64 i chcesz po prostu zobaczyć surowe bajty, nasz dekoder Base64 je pokaże. Aby utworzyć szyfrogram w tych formatach, użyj narzędzia do szyfrowania AES.
// AES-256-GCM decrypt with a passphrase (PBKDF2-HMAC-SHA256, 600,000 iterations).
// Identical code runs in the browser and in Node.js 20+ via Web Crypto.
async function aesGcmDecrypt(base64, passphrase) {
const enc = new TextEncoder();
const packed = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
const salt = packed.slice(0, 16), iv = packed.slice(16, 28); // salt(16) | iv(12)
const ct = packed.slice(28); // ciphertext + tag
const baseKey = await crypto.subtle.importKey(
'raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 600000, hash: 'SHA-256' },
baseKey, { name: 'AES-GCM', length: 256 }, false, ['decrypt']);
const plain = await crypto.subtle.decrypt(
{ name: 'AES-GCM', iv }, key, ct); // throws if the tag fails
return new TextDecoder().decode(plain); // recovered plaintext
} Kluczowe funkcje
Automatyczne wykrywanie wyniku OpenSSL i CryptoJS
Wklej szyfrogram zaczynający się od U2FsdGVkX1, a narzędzie rozpozna format Salted__ i zaproponuje przełączenie jednym kliknięciem na odpowiedni przebieg odszyfrowywania, dzięki czemu nigdy nie walczysz z błędem bez wyjścia.
Trzy funkcje wyprowadzania klucza
Odszyfrowuj dane z każdej generacji formatu openssl enc: PBKDF2 z niestandardową liczbą iteracji, EVP_BytesToKey z SHA-256, lub przestarzały pojedynczy przebieg MD5 używany przez CryptoJS.
Wyjaśnia, dlaczego odszyfrowanie się nie powiodło
Zamiast ogólnego błędu otrzymujesz diagnozę: zły klucz kontra zły IV, błąd uwierzytelniania GCM, błąd dopełnienia CBC, zanieczyszczenie base64 lub „to wygląda na szyfrogram z ery MD5, spróbuj EVP-MD5”.
Równoważne polecenie openssl pokazane na żywo
Zobacz dokładne polecenie openssl enc -d, które odtwarza odszyfrowanie w wierszu poleceń, wraz z liczbą iteracji, dzięki czemu możesz zweryfikować wynik poza przeglądarką.
Hasło lub klucz surowy, GCM/CBC/CTR
Obsługuje samowystarczalny szyfrogram z hasłem, szyfrogram z kluczem surowym z dołączonym lub osobno podanym IV, oraz wszystkie trzy tryby Web Crypto.
100% w Twojej przeglądarce
Szyfrogram i klucze są przetwarzane lokalnie za pomocą Web Crypto API i nigdy nie są przesyłane — możesz to zweryfikować za pomocą zakładki Sieć lub przechodząc offline.
Przykłady odszyfrowywania AES
Odszyfruj samowystarczalny szyfrogram z hasłem (GCM)
sól(16) ‖ iv(12) ‖ szyfrogram ‖ tag(16), Base64 — ze strony szyfrowania
The quick brown fox jumps over the lazy dog.
To odwrotność przykładu GCM ze strony szyfrowania. Weź samowystarczalny ciąg Base64, który został tam wygenerowany dla hasła hunter2, wklej go tutaj z Trybem GCM, Rozmiarem klucza 256, Typem klucza Hasło i tym samym hasłem hunter2, a oryginalne zdanie powróci. Nie musisz wprowadzać soli ani IV osobno — narzędzie odczytuje 16-bajtową sól i 12-bajtowy IV z początku ciągu, wyprowadza klucz za pomocą PBKDF2-HMAC-SHA256 (600 000 iteracji) i weryfikuje dołączony 128-bitowy tag GCM przed zwróceniem jakiegokolwiek tekstu. Kliknij Wczytaj przykład na stronie szyfrowania, aby wygenerować nowy ciąg, a następnie odszyfruj go tutaj.
Odszyfruj prawdziwy wynik OpenSSL / PBKDF2
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!
To autentyczny wynik openssl enc. Wklej go, przełącz na tryb OpenSSL (Tryb CBC, Typ klucza Hasło), wprowadź hasło correct-horse, wybierz funkcję wyprowadzania klucza PBKDF2 i ustaw liczbę iteracji na 10 000 — tekstem jawnym jest Attack at dawn!. Prefiks U2FsdGVkX1 poinformował narzędzie, że to format Salted__, a 8-bajtowa sól znajduje się zaraz po tym nagłówku wewnątrz Base64. Możesz odtworzyć dokładne odszyfrowanie w wierszu poleceń: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. Jeśli podobny szyfrogram zawiedzie z PBKDF2, prawdopodobnie został utworzony przez CryptoJS — przełącz KDF na EVP-MD5 i spróbuj ponownie. Kliknij Wczytaj przykład OpenSSL, aby wypełnić te wartości automatycznie.
Jak odszyfrować szyfrogram AES
- 1
Wklej szyfrogram
Upuść swój szyfrogram Base64 lub Hex do pola wejściowego. Jeśli zaczyna się od U2FsdGVkX1, narzędzie oznaczy go jako format OpenSSL/CryptoJS i zaproponuje przełączenie na właściwy tryb.
- 2
Ustaw format i tryb
Dla samowystarczalnego ciągu z tego narzędzia zostaw tryb Hasło i odpowiadający GCM/CBC/CTR. Dla wyniku OpenSSL/CryptoJS zaakceptuj przełączenie (CBC + hasło). Dla danych z kluczem surowym wybierz Klucz surowy i kodowanie, a jeśli IV nie jest dołączony, podaj go osobno.
- 3
Wybierz funkcję wyprowadzania klucza
W trybie OpenSSL wybierz PBKDF2 (i jego liczbę iteracji), EVP-SHA256 lub EVP-MD5, aby dopasować sposób wyprowadzenia klucza. EVP-MD5 to ta, której używa CryptoJS.
- 4
Wprowadź hasło lub klucz
Wpisz dokładne hasło albo wklej dokładny klucz surowy jako hex lub Base64. Tekst jawny pojawi się po prawej stronie, gdy tylko wszystko będzie się zgadzać.
- 5
Przeczytaj diagnozę, jeśli się nie powiedzie
Jeśli odszyfrowanie zwróci błąd, panel wskaże prawdopodobną przyczynę — zły IV, zły klucz, błąd dopełnienia, zanieczyszczenie base64 lub niezgodność KDF — dzięki czemu możesz dostosowywać jedno ustawienie naraz zamiast zgadywać.
Dlaczego odszyfrowywanie AES zawodzi — i jak to naprawić
Uwierzytelnianie GCM nie powiodło się
GCM odmawia zwrócenia tekstu jawnego, jeśli tag się nie zweryfikuje. Przyczyną jest złe hasło lub klucz, zły tryb, zły IV, albo zmieniony/obcięty szyfrogram — GCM nie potrafi powiedzieć który. Sprawdź ponownie każdy z nich względem sposobu zaszyfrowania danych.
mode: CBC // but the data was encrypted with GCM => Authentication failed
mode: GCM, same passphrase and key size as encryption => plaintext
CBC: zniekształcony pierwszy blok oznacza zły IV
W CBC IV wpływa tylko na pierwszy 16-bajtowy blok. Jeśli pierwszy blok jest bezsensowny, a reszta dekoduje się czysto, Twój IV jest błędny; jeśli wszystko jest bezsensowne, klucz jest błędny.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
iv: (the exact IV used to encrypt) => Attack at dawn!
Błąd dopełnienia CBC / PKCS#7
Błąd dopełnienia niemal zawsze oznacza, że klucz jest błędny; może też oznaczać, że szyfrogram został uszkodzony, obcięty, lub nie był dopełniony metodą PKCS#7. Potwierdź, że cały szyfrogram został skopiowany, a hasło i KDF się zgadzają.
passphrase: hunter3 // one character off => padding error
passphrase: hunter2 // exact => plaintext
Zanieczyszczenie Base64 (lub hex)
Nowe linie, spacje lub inteligentne cudzysłowy wklejone razem z szyfrogramem psują dekodowanie. Narzędzie automatycznie usuwa białe znaki, ale brakujące lub dodatkowe znaki nadal powodują błąd.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ= (clean Base64)
Wykryto U2FsdGVkX1, ale tryb OpenSSL jest wyłączony
Jeśli dane wejściowe zaczynają się od U2FsdGVkX1, patrzysz na wynik Salted__ z OpenSSL/CryptoJS, który nie odszyfruje się jako zwykły ciąg z hasłem. Narzędzie pokazuje baner; kliknij Przełącz na tryb OpenSSL i wybierz KDF.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
OpenSSL compatible: on, KDF chosen => plaintext
Niezgodność KDF (pułapka CryptoJS)
Szyfrogram, który zawodzi z PBKDF2 lub SHA-256, ale odszyfrowuje się z EVP-MD5, został utworzony przez CryptoJS lub openssl 1.0.2 i starsze. W wierszu poleceń wymagają one -md md5.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
KDF: EVP-MD5 // matches CryptoJS => plaintext
Co możesz zrobić dzięki odszyfrowywaniu AES
- Odszyfruj wynik openssl enc
- Odczytaj blob Salted__ utworzony przez openssl enc -aes-256-cbc bez przechodzenia do terminala: wklej Base64, wprowadź hasło, wybierz KDF i uzyskaj swój tekst jawny.
- Odszyfruj szyfrogram CryptoJS
- Odzyskaj dane ze starszej aplikacji, która używała CryptoJS AES.encrypt(text, passphrase). Wybierz EVP-MD5, aby dopasować jego jednoprzebiegowe wyprowadzanie klucza MD5 — krok, który większość ludzi pomija.
- Debuguj odszyfrowanie, które wciąż zawodzi
- Gdy Twój własny kod nie potrafi czegoś odszyfrować, wklej to tutaj, aby wyizolować, czy problem leży w kluczu, IV, trybie, kodowaniu, czy w KDF, korzystając z panelu diagnostycznego.
- Zweryfikuj cały cykl szyfrowania
- Potwierdź, że szyfrogram ze strony szyfrowania AES lub z Twojej aplikacji odszyfrowuje się z powrotem do dokładnie oryginalnych bajtów.
- Zrozum nieznany szyfrogram
- Rozpoznaj format po jego kształcie — prefiks U2FsdGVkX1 lub prefiks o stałej długości przypominający IV — i ustal, jak został utworzony, zanim spróbujesz klucza.
Wewnętrzne mechanizmy i formaty odszyfrowywania AES
- Odszyfrowanie GCM — uwierzytelnione
- GCM ponownie oblicza 128-bitowy tag na podstawie szyfrogramu i porównuje go przed zwróceniem jakiegokolwiek tekstu jawnego; niezgodność powoduje błąd zamiast wycieku uszkodzonych danych. Używa 96-bitowego IV, który był dołączony na początku. Awaria GCM oznacza, że klucz, tryb, IV lub szyfrogram są nieprawidłowe — sam szyfr nie potrafi powiedzieć, który z nich.
- Odszyfrowanie CBC — obserwuj pierwszy blok i dopełnienie
- CBC ma dwa odrębne sygnatury błędów. Jeśli tylko pierwszy 16-bajtowy blok jest zniekształcony, a reszta wygląda dobrze, IV był błędny. Jeśli każdy blok to bezsensowne dane, klucz jest błędny. Błąd dopełnienia PKCS#7 zwykle oznacza, że klucz jest błędny, albo że szyfrogram został uszkodzony lub obcięty. CBC nie ma tagu (w przeciwieństwie do konstrukcji uwierzytelnionej, takiej jak HMAC), więc zły klucz może nawet odszyfrować się do wiarygodnie wyglądających bajtów.
- Odszyfrowanie CTR — ciche w przypadku błędu
- CTR nigdy nie zgłasza błędu: zły klucz po prostu daje bezsensowne dane, co zwykle ujawnia się jako błąd „nieprawidłowy UTF-8” po zdekodowaniu bajtów na tekst. Dopasuj dokładnie licznik/IV. Ponieważ nie ma kontroli integralności, traktuj z podejrzliwością każdy wynik CTR, którego nie uwierzytelniłeś osobno.
- Układy szyfrogramu (F1 / F2 / F3)
- Format 1 (hasło) to sól(16), potem IV, potem szyfrogram, z dołączonym 16-bajtowym tagiem GCM w trybie GCM. Format 2 (klucz surowy) to IV, potem szyfrogram, albo goły szyfrogram z osobno podanym IV. Format 3 (OpenSSL) to nagłówek ASCII Salted__, potem 8-bajtowa sól, potem szyfrogram. Znajomość posiadanego układu mówi narzędziu, gdzie znajdują się sól i IV, a sam klucz surowy powinien pochodzić z CSPRNG — zobacz generator kluczy tajnych.
- Wyprowadzanie klucza: dopasowanie do tego, co zaszyfrowało dane
- Dla samowystarczalnego szyfrogramu z hasłem to narzędzie używa PBKDF2-HMAC-SHA256 przy 600 000 iteracjach. Dla szyfrogramu OpenSSL/CryptoJS musisz wybrać zastosowany KDF: PBKDF2 (domyślna wartość openssl -pbkdf2 to 10 000 iteracji — ustaw dokładną liczbę), EVP_BytesToKey z SHA-256 (openssl 1.1+ bez -pbkdf2), albo EVP_BytesToKey z MD5 i pojedynczym przebiegiem (CryptoJS oraz openssl 1.0.2 i starsze). Klasyczny błąd „to się nie odszyfrowuje” to szyfrogram z CryptoJS lub starego openssl, próbowany z SHA-256 — przełącz na EVP-MD5, a zadziała.
Najlepsze praktyki odszyfrowywania AES
- Zacznij od zidentyfikowania formatu
- Zanim dotkniesz ustawień, spójrz na szyfrogram. Prefiks U2FsdGVkX1 oznacza OpenSSL/CryptoJS; samowystarczalny ciąg z tego narzędzia to format z hasłem; goły blob zwykle wymaga klucza surowego i osobnego IV.
- Dopasuj dokładnie funkcję wyprowadzania klucza
- Dla szyfrogramu OpenSSL/CryptoJS KDF jest tak samo ważny jak hasło. Jeśli PBKDF2 zawiedzie, spróbuj EVP-MD5 (CryptoJS, stary openssl); liczba iteracji też musi się zgadzać, nie tylko algorytm.
- Wklejaj szyfrogram czysto
- Zbłąkane nowe linie lub spacje z kopiowania mogą uszkodzić Base64. To narzędzie usuwa białe znaki, ale jeśli dekodowanie wciąż zawodzi, sprawdź, czy nie ma inteligentnych cudzysłowów, brakujących znaków lub obciętej kopii. Nasze narzędzie Base64 może pomóc zbadać podejrzany ciąg.
- Traktuj wynik z błędnym kluczem uczciwie
- Przy CTR lub CBC błędny klucz może wygenerować bajty zamiast błędu. Jeśli wynik wygląda na bezsensowny albo nie przechodzi testu UTF-8, klucz lub IV są błędne — nie ufaj częściowo wyglądającemu wynikowi.
- Nigdy nie wysyłaj tajnego szyfrogramu ani kluczy na serwer
- Sens odszyfrowywania w przeglądarce polega na tym, że nic nie opuszcza strony. Unikaj narzędzi, które przesyłają dane; to narzędzie używa Web Crypto lokalnie, a Ty możesz to zweryfikować za pomocą zakładki Sieć albo przechodząc offline. AES-256 jest silny — zatwierdzony w CNSA 2.0 dla TOP SECRET — więc jeśli nie możesz odszyfrować, problemem są parametry, a nie szyfr.
FAQ dotyczące odszyfrowywania AES
Czy można odszyfrować AES bez klucza?
Jak odszyfrować wynik openssl enc?
Co oznacza U2FsdGVkX1 na początku szyfrogramu?
Jak odszyfrować szyfrogram CryptoJS?
GCM czy CBC — dlaczego mój szyfrogram odszyfrowuje się jednym sposobem, a nie drugim?
Czy mój szyfrogram lub klucz są przesyłane, gdy tu odszyfrowuję?
Jaka jest różnica między hasłem a kluczem surowym podczas odszyfrowywania?
Powiązane narzędzia
Zobacz wszystkie narzędzia →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.
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.
Koder i generator JWT
Narzędzia bezpieczeństwa
Darmowy generator i koder JWT online. Zbuduj header i payload, podpisz HS256, RS256 lub ES256 natychmiast. W 100% w przeglądarce — sekret i klucz nie opuszczają urządzenia.
Darmowy generator sekretu JWT — HS256/384/512
Narzędzia bezpieczeństwa
Wygeneruj mocny, zgodny z RFC sekret JWT dla HS256/384/512 — w 100% w przeglądarce, nigdy nie wysyłany na serwer. base64url, base64 lub hex; kopiuj do .env.