Narzędzie do szyfrowania AES — GCM, CBC i CTR
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.
Opcje zaawansowane
Nigdy nie używaj ponownie IV z tym samym kluczem. Pozostaw puste, aby wygenerować bezpieczny, losowy IV.
Czym jest szyfrowanie AES?
AES (Advanced Encryption Standard) to symetryczny szyfr blokowy, ustandaryzowany przez NIST w FIPS 197 w 2001 roku, oparty na projekcie Rijndael autorstwa Joana Daemena i Vincenta Rijmena. Szyfruje dane w stałych 128-bitowych blokach, używając klucza o długości 128, 192 lub 256 bitów, a ten sam klucz służy zarówno do szyfrowania, jak i odszyfrowywania. Jest podstawowym narzędziem współczesnej kryptografii, chroniącym wszystko — od ruchu HTTPS po szyfrowanie dysków.
Surowy szyfr blokowy przekształca tylko jeden 16-bajtowy blok, dlatego AES zawsze działa w ramach trybu pracy, który łączy bloki ze sobą. To narzędzie oferuje trzy takie tryby, wszystkie dostarczane natywnie przez interfejs Web Crypto API przeglądarki: GCM, CBC i CTR. GCM (Galois/Counter Mode, NIST SP 800-38D) jest zalecanym trybem domyślnym, ponieważ jest uwierzytelniony — oprócz szyfrogramu wytwarza 128-bitowy tag uwierzytelniający, dzięki czemu każda manipulacja zostanie wykryta przy odszyfrowywaniu. CBC i CTR zapewniają wyłącznie poufność; same w sobie nie potrafią stwierdzić, czy szyfrogram został zmieniony, dlatego TLS 1.3 (RFC 8446) porzucił wszystkie zestawy szyfrów CBC na rzecz uwierzytelnionych trybów, takich jak GCM.
Zauważysz, że nie ma tu trybu ECB, i jest to celowe. ECB szyfruje każdy identyczny blok tekstu jawnego do identycznego bloku szyfrogramu, więc struktura na dużą skalę przenika wprost przez szyfrowanie — słynny obraz „pingwina ECB” wciąż wyraźnie przedstawia pingwina po zaszyfrowaniu. Interfejs Web Crypto API celowo pomija ECB z tego właśnie powodu (implementuje wyłącznie AES-CBC, AES-CTR i AES-GCM), i my postępujemy tak samo. Jeśli musisz współpracować z przestarzałym systemem, który używał ECB, potraktuj to jako powód do migracji, a nie do powielania tej słabości.
Ponieważ większość ludzi wpisuje hasło zamiast losowego 32-bajtowego klucza, narzędzie wyprowadza klucz AES z Twojego hasła za pomocą PBKDF2-HMAC-SHA256 przy 600 000 iteracjach i losowej 16-bajtowej soli, zgodnie z aktualnymi wytycznymi OWASP dotyczącymi przechowywania haseł (oraz NIST SP 800-132, który wymaga soli o długości co najmniej 128 bitów). Dzięki temu brute-force wobec słabego hasła jest powolny, ale to nie magia: to narzędzie do nauki trybów, debugowania szyfrogramu i jednorazowych danych osobistych — nie do ochrony sekretów produkcyjnych, które należą do dedykowanego systemu zarządzania kluczami. Aby wygenerować silne hasło, skorzystaj z naszego generatora losowych haseł; a po prawdziwie losowy klucz sięgnij po generator kluczy tajnych.
// AES-256-GCM 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 aesGcmEncrypt(plaintext, passphrase) {
const enc = new TextEncoder();
const salt = crypto.getRandomValues(new Uint8Array(16));
const iv = crypto.getRandomValues(new Uint8Array(12));
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, ['encrypt']);
const ct = new Uint8Array(await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, enc.encode(plaintext)));
const packed = new Uint8Array([...salt, ...iv, ...ct]); // salt(16) | iv(12) | ct+tag
return btoa(String.fromCharCode(...packed)); // self-contained Base64
} Kluczowe funkcje
Domyślnie uwierzytelnione szyfrowanie GCM
GCM tworzy szyfrogram wraz ze 128-bitowym tagiem uwierzytelniającym, więc odszyfrowanie głośno zawiedzie, jeśli zmieni się choć jeden bajt. CBC i CTR są o jedno kliknięcie dalej, gdy potrzebujesz z nimi współpracować.
Samowystarczalny szyfrogram
Tryb hasła pakuje losową sól, IV i tag w jeden ciąg Base64, więc osoba odszyfrowująca potrzebuje tylko hasła — nie ma osobnych pól do kopiowania ani do zgubienia.
Hasło lub klucz surowy
Wpisz hasło (rozciągane za pomocą PBKDF2-HMAC-SHA256, 600 000 iteracji) lub wklej dokładny klucz 128/192/256-bitowy w postaci hex lub Base64, z odznaką na żywo pokazującą liczbę bajtów, potwierdzającą długość.
Wynik zgodny z OpenSSL
Włącz tryb OpenSSL, aby uzyskać format Salted__ odczytywany przez polecenie openssl enc i CryptoJS, z równoważnym poleceniem CLI wyświetlanym na żywo, dzięki czemu możesz je odtworzyć w terminalu.
100% w Twojej przeglądarce
Każdy bajt jest szyfrowany lokalnie za pomocą Web Crypto API. Otwórz zakładkę Sieć, a zobaczysz, że nic nie opuszcza strony — działa nawet offline.
Wynik w Base64 lub Hex
Skopiuj wynik w kodowaniu oczekiwanym przez Twój docelowy system i sprawdź długości soli, IV, szyfrogramu i tagu na pasku podziału na segmenty.
Przykłady szyfrowania AES
GCM + hasło (samowystarczalny, niedeterministyczny)
The quick brown fox jumps over the lazy dog.
sól (16 B) + IV (12 B) + szyfrogram + tag (16 B), zakodowane w Base64 — nowa wartość przy każdym uruchomieniu
Przy trybie GCM, rozmiarze klucza 256, typie klucza Hasło i haśle hunter2, to zdanie szyfruje się do pojedynczego, samowystarczalnego ciągu Base64. Zaszyfruj je dwukrotnie, a otrzymasz dwa zupełnie różne wyniki — to celowe działanie. Tryb Hasło generuje świeżą 16-bajtową sól i świeży 12-bajtowy IV przy każdym szyfrowaniu, więc identyczny tekst jawny nigdy nie tworzy identycznego szyfrogramu, a obserwator nie jest w stanie stwierdzić, że dwie wiadomości są takie same. Pasek segmentów pod wynikiem pokazuje dokładny układ: najpierw sól, potem IV, a następnie szyfrogram z dołączonym 128-bitowym tagiem GCM. Aby odszyfrować, odbiorca potrzebuje jedynie hasła oraz tego samego trybu i rozmiaru klucza — sól, IV i tag podróżują razem wewnątrz ciągu.
Wynik zgodny z OpenSSL (CBC + hasło)
Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Włącz tryb zgodny z OpenSSL z Trybem CBC, Typem klucza Hasło, hasłem correct-horse, KDF PBKDF2 i 10 000 iteracjami. Narzędzie wygeneruje wtedy format Salted__ znany z OpenSSL: ciąg Base64, który zawsze zaczyna się od U2FsdGVkX1 — czyli kodowania Base64 8-bajtowego nagłówka Salted__. Ponieważ za każdym razem generowana jest świeża, losowa 8-bajtowa sól, dokładny ciąg zmienia się przy każdym uruchomieniu, ale każdy z nich da się odszyfrować w wierszu poleceń za pomocą: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — co wypisze Attack at dawn!. Wybierz EVP-MD5 zamiast PBKDF2, aby dopasować się do CryptoJS lub OpenSSL 1.0.2 i starszych. Zwróć uwagę, że openssl enc nie obsługuje GCM, więc tryb OpenSSL obsługuje tylko CBC.
Jak szyfrować tekst za pomocą AES
- 1
Wybierz tryb i rozmiar klucza
Pozostaw Tryb ustawiony na GCM (zalecane), a Rozmiar klucza na 256 dla najsilniejszego rozsądnego ustawienia domyślnego. Przełącz na CBC lub CTR tylko wtedy, gdy wymaga tego docelowy system.
- 2
Wybierz hasło lub klucz surowy
Pozostaw Typ klucza ustawiony na Hasło i wpisz silne hasło, albo przełącz na Klucz surowy i wklej dokładny klucz 128/192/256-bitowy w postaci hex lub Base64. Odznaka z liczbą bajtów potwierdza, czy Twój klucz surowy ma prawidłową długość.
- 3
Wprowadź tekst do zaszyfrowania
Wpisz lub wklej swój tekst jawny. Szyfrowanie odbywa się automatycznie podczas pisania, całkowicie w Twojej przeglądarce — bez podróży przez przycisk i bez przesyłania danych.
- 4
Skopiuj samowystarczalny szyfrogram
Wynik w Base64 po prawej stronie zawiera już sól, IV i tag uwierzytelniający. Użyj paska segmentów, by zobaczyć układ bajtów, a następnie kliknij Kopiuj. Przełącz kodowanie wyjścia na Hex, jeśli tego oczekuje Twój docelowy system.
- 5
Odszyfruj go z powrotem, gdy zajdzie taka potrzeba
Przekaż odbiorcy szyfrogram, hasło oraz ten sam tryb i rozmiar klucza, albo otwórz stronę odszyfrowywania AES, aby odwrócić proces samodzielnie.
Częste błędy przy szyfrowaniu AES
Mylenie hasła z kluczem surowym
Klucz surowy musi mieć dokładnie 16, 24 lub 32 bajty losowych danych (wprowadzonych jako hex lub Base64); hasło to dowolny tekst, który najpierw musi zostać rozciągnięty przez KDF. Wybranie Klucza surowego i wklejenie ludzkiego hasła albo zwróci błąd długości, albo utworzy słaby klucz.
Key type: Raw key Key (hex): correct horse battery staple (not hex, not 32 bytes)
Key type: Passphrase Passphrase: correct horse battery staple (stretched with PBKDF2)
Ponowne użycie IV z tym samym kluczem
IV musi być unikalny dla każdej wiadomości pod danym kluczem. Ponowne jego użycie jest zabójcze dla GCM (może ujawnić klucz uwierzytelniający) i łamie poufność dla CBC i CTR. Pozwól narzędziu generować świeży, losowy IV za każdym razem.
// same key, same IV for two messages encrypt(key, iv, a); encrypt(key, iv, b);
// fresh random IV each time (the default) encrypt(key, randomIV(), a);
Utrata soli, IV lub tagu
Jeśli skopiujesz tylko bajty szyfrogramu i pominiesz poprzedzającą sól/IV — lub dołączony tag GCM — danych nigdy nie da się odszyfrować. Zachowaj cały samowystarczalny ciąg, a nie tylko jego środek.
stored = ciphertext // salt + IV + tag thrown away
stored = salt + iv + ciphertext + tag // the full Base64 string
Oczekiwanie, że wynik GCM będzie taki sam przy każdym uruchomieniu
GCM (i ogólnie tryb hasła) używa losowej soli i IV, więc ten sam tekst szyfruje się do innego ciągu Base64 za każdym razem. To cecha bezpieczeństwa, nie błąd — oznacza, że podsłuchujący nie może stwierdzić, że dwa szyfrogramy szyfrują tę samą wiadomość.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
assert(decrypt(encrypt(msg)) === msg) // this is what must hold
Co możesz zrobić dzięki szyfrowaniu AES
- Poznaj zachowanie trybów AES
- Przełączaj się między GCM, CBC i CTR przy tym samym wejściu, aby zobaczyć, jak zmienia się uwierzytelnianie, długość IV i rozmiar szyfrogramu. Praktyczny sposób na zrozumienie tego, co faktycznie określa NIST SP 800-38D.
- Wygeneruj szyfrogram odczytywalny przez inny system
- Wygeneruj wynik w formacie Salted__ OpenSSL (lub jako klucz surowy plus IV), aby backend, skrypt lub kolega korzystający z openssl albo biblioteki kryptograficznej mógł go odszyfrować bez problemu.
- Zaszyfruj krótką notatkę lub fragment
- Chroń jednorazowy fragment osobistego tekstu — frazę odzyskiwania przenoszoną między urządzeniami, fragment ze zgłoszenia wsparcia — hasłem, które znasz tylko Ty. Nie do sekretów regulowanych ani produkcyjnych.
- Prototypuj format szyfrowania
- Ustal tu układ soli/IV/tagu oraz ustawienia KDF przed napisaniem kodu, korzystając z podziału na segmenty, by potwierdzić kolejność i długości bajtów.
- Wygeneruj wektory testowe
- Utwórz znany szyfrogram przy stałym haśle i trybie, aby zasilić własne testy odszyfrowywania, a następnie zweryfikuj cały cykl na stronie odszyfrowywania AES.
Tryby AES i wyprowadzanie klucza
- GCM (Galois/Counter Mode) — uwierzytelniony, zalecany
- Poufność plus 128-bitowy tag uwierzytelniający (NIST SP 800-38D). Używa 96-bitowego (12-bajtowego) IV, generowanego losowo przy każdym szyfrowaniu, a zarówno szyfrowanie, jak i odszyfrowywanie dobrze się zrównoleglają. Jedna zasada, której nigdy nie wolno złamać: nigdy nie używaj ponownie IV z tym samym kluczem. SP 800-38D ogranicza pojedynczy klucz do około 2^32 losowo wygenerowanych IV, a powtórzenie ujawnia XOR dwóch tekstów jawnych i może nawet ujawnić klucz uwierzytelniający chroniący tag. Najlepszy wybór niemal do wszystkiego.
- CBC (Cipher Block Chaining) — tylko poufność
- Każdy blok jest łączony operacją XOR z poprzednim blokiem szyfrogramu, przy użyciu losowego 16-bajtowego IV. Nie ma wbudowanego uwierzytelniania, więc musi być łączony z osobnym MAC-iem — szyfruj-a-potem-MAC, na przykład za pomocą naszego generatora HMAC — a historycznie jest podatny na ataki typu padding oracle (Vaudenay, EUROCRYPT 2002). Oferowany tu ze względu na interoperacyjność z OpenSSL i starszymi systemami.
- CTR (Counter) — tylko poufność, działanie strumieniowe
- Zamienia AES w szyfr strumieniowy poprzez szyfrowanie licznika, dzięki czemu dowolna długość bajtów działa bez dopełniania, a bloki swobodnie się zrównoleglają. Podobnie jak CBC, sam w sobie nie zapewnia integralności, a ponowne użycie licznika/IV pod tym samym kluczem jest katastrofalne. Przydatny, gdy potrzebujesz dostępu swobodnego lub semantyki strumieniowej.
- ECB — niedostępny (celowo)
- Electronic Codebook szyfruje każdy blok niezależnie, więc identyczne bloki tekstu jawnego dają identyczne bloki szyfrogramu, a wzorce przenikają na zewnątrz — słynny „pingwin ECB”. Web Crypto API celowo go nie implementuje, i my również nie. Jeśli przestarzały system wymaga ECB, potraktuj to jako błąd do naprawienia, a nie format do odtworzenia.
- Wyprowadzanie klucza: 600 000 vs 10 000 vs 1 iteracja
- W domyślnym trybie hasła narzędzie używa PBKDF2-HMAC-SHA256 przy 600 000 iteracjach (ten sam hash SHA-256 zastosowany setki tysięcy razy) z 16-bajtową solą, zgodnie z OWASP. W trybie zgodnym z OpenSSL, PBKDF2 domyślnie używa jedynie 10 000 iteracji (domyślna wartość openssl enc), a przestarzała funkcja KDF EVP_BytesToKey, używana przez CryptoJS i stare OpenSSL, wykonuje pojedynczy przebieg MD5 — o rzędy wielkości słabszy. Więcej iteracji oznacza wolniejszy brute-force na próbę, dlatego nowoczesna wartość domyślna jest tak dużo wyższa. Argon2 i scrypt są jeszcze silniejsze, ale nie są częścią Web Crypto, więc wykraczają poza zakres tego narzędzia; do przechowywania haseł kieruj się wytycznymi OWASP i preferuj Argon2id.
Najlepsze praktyki szyfrowania AES
- Preferuj GCM, chyba że druga strona wymaga inaczej
- Uwierzytelnione szyfrowanie wykrywa manipulacje, które CBC i CTR po cichu przepuszczają. Schodź do CBC lub CTR wyłącznie ze względu na interoperacyjność i w takim wypadku dodaj MAC.
- Używaj świeżego, losowego IV dla każdej wiadomości
- Narzędzie robi to automatycznie. Jeśli nadpisujesz IV ręcznie, nigdy nie używaj ponownie tego samego z tym samym kluczem — dla GCM powtórzenie jest katastrofalne, a dla CBC łamie bezpieczeństwo semantyczne.
- Wybieraj silne hasła i prawdziwie losowe klucze
- PBKDF2 spowalnia brute-force, ale nie uratuje słabego hasła. Wygeneruj długie hasło za pomocą generatora haseł albo prawdziwie losowy klucz za pomocą generatora kluczy tajnych.
- Trzymaj sól, IV i tag razem z szyfrogramem
- Nie są tajne, ale bez nich odszyfrowanie zawiedzie. Samowystarczalny format tego narzędzia łączy wszystkie trzy elementy; jeśli używasz trybu z surowym kluczem i gołym szyfrogramem, skopiuj IV osobno i przechowuj go razem z szyfrogramem.
- Nie szyfruj sekretów produkcyjnych ani regulowanych w żadnym narzędziu online
- Nawet w pełni po stronie klienta, narzędzie w przeglądarce służy do nauki, debugowania i jednorazowych zastosowań osobistych. Prawdziwe sekrety należą do sprawdzonego systemu zarządzania kluczami z audytowaną obsługą i rotacją kluczy. Sam AES-256 jest silny — zatwierdzony w ramach zestawu CNSA 2.0 NSA dla informacji do poziomu TOP SECRET — a rzeczywiste przełamania biorą się z błędów implementacji, nie z samego szyfru.
FAQ dotyczące szyfrowania AES
Czy bezpiecznie jest szyfrować tekst online?
Czy AES można odszyfrować bez klucza?
GCM czy CBC — którego trybu użyć?
AES-128 czy AES-256 — czy 256 się opłaca?
Czy moje dane są przesyłane, gdy tu szyfruję?
Jaka jest różnica między hasłem a kluczem?
Czy mogę zaszyfrować tak, by OpenSSL lub CryptoJS mogły to odszyfrować?
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ą.
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.