Szyfrowanie / deszyfrowanie AES — GCM, CBC, CTR i ECB w przeglądarce
Szyfrowanie / deszyfrowanie AES
Szyfruj lub odszyfrowuj przy użyciu AES-128, AES-192 lub AES-256 (FIPS 197) w trybie GCM (szyfrowanie uwierzytelnione), CBC, CTR lub ECB. Klucze to surowe bajty w hex lub Base64, albo wyprowadzone z hasła przez PBKDF2-HMAC-SHA256. GCM obsługuje AAD i pokazuje znacznik uwierzytelniający osobno; wyniki CBC/CTR/ECB są zgodne z enc z OpenSSL. Skróty są w Generatorze skrótów, kody MAC z kluczem w Generatorze HMAC, a szyfry przestarzałe na stronie Legacy Ciphers w tej rodzinie. Działa w całości lokalnie — klucze i tekst jawny nigdy nie opuszczają karty przeglądarki. Pliki do 200 MB.
Wszystko wpisane tutaj zostaje w tej karcie — ale to nie znaczy "bezpieczne dla sekretów produkcyjnych". Pamięć przeglądarki, rozszerzenia i podglądający przez ramię widzą to, co zostanie wklejone. Używaj tej strony do nauki, weryfikacji i testów interoperacyjności, a nie do obsługi danych klientów na żywo.
Kierunek:Tryb:Wynik:
GCM = AES-GCM z 12-bajtowym nonce i 128-bitowym znacznikiem uwierzytelniającym (AEAD: poufność + integralność). Domyślny, gdy celem jest bezpieczeństwo.
Klucz(surowe bajty: 16, 24 lub 32 bajty = AES-128/192/256; o wyborze decyduje długość wklejonych danych)
Hex toleruje spacje, dwukropki i prefiksy 0x.
Sól (hex, 8–16 bajtów):
Iteracje:Rozmiar klucza:
Sól przechodzi razem z szyfrogramem — kto odszyfrowuje, potrzebuje tego samego hasła, soli, liczby iteracji i rozmiaru klucza. OWASP zaleca co najmniej 600 000 iteracji PBKDF2-HMAC-SHA256.
IV / nonce(GCM: 12 bajtów; CBC/CTR: 16 bajtów — hex)
Nigdy nie używaj ponownie nonce pod tym samym kluczem w GCM ani CTR.
AAD(dodatkowe dane uwierzytelnione — uwierzytelnione, ale nieszyfrowane, opcjonalne)
Długość znacznika:
Znacznik uwierzytelniający(hex, tak jak wypisuje ta strona przy szyfrowaniu — wymagane do odszyfrowania)
Plaintext text (the data to encrypt, UTF-8 encoded)
Wybierz plik lub przeciągnij go tutaj Plik jest czytany lokalnie w porcjach po 8 MB; nic nie jest wysyłane. Do 200 MB.
Wiersze parametrów zapisują dokładny odczyt klucza, IV, rozmiar AAD i znacznik, więc skopiowany wynik zawsze można odtworzyć na innym komputerze.
Który tryb wybrać? GCM to domyślna odpowiedź: szyfruje i uwierzytelnia — wiersz znacznika ujawnia modyfikację (spróbuj odszyfrować z przerzuconym bajtem znacznika, a strona odmówi). CBC ukrywa wzorce bloków, ale nie zapewnia integralności; połącz go z HMAC (zobacz Generator HMAC), jeśli jego użycie jest konieczne. CTR zamienia AES w szyfr strumieniowy — bez dopełniania, ale ponowne użycie nonce pod tym samym kluczem jest katastrofalne zarówno w CTR, jak i w GCM. ECB jest tu tylko dla zgodności i dydaktyki: identyczne bloki tekstu jawnego szyfrują się do identycznych bloków szyfrogramu (słynny pingwin ECB).
Interoperacyjność z OpenSSL — wyniki CBC i CTR z tej strony (dopełnianie PKCS#7, surowy klucz) przechodzą w obie strony przez wiersz poleceń openssl enc: openssl enc -aes-256-cbc -K <64-hex-klucz> -iv <32-hex-iv> -in msg.txt -out msg.enc openssl enc -d -aes-256-cbc -K <klucz> -iv <iv> -in msg.enc -out msg.txt To samo działa z -aes-128-cbc, -aes-192-cbc, -aes-256-ctr (IV 16-bajtowy = początkowy blok licznika). Uwaga: openssl encnie obsługuje GCM — do szyfrowania uwierzytelnionego użyj tej strony albo openssl aesgcm z OpenSSL 3.3+.
Potrzebujesz zamiast tego chińskiego szyfru państwowego? SM4 (GB/T 32907-2016) — szyfr blokowy wymagany w chińskiej kryptografii komercyjnej, o tym samym bloku 128-bitowym i rozmiarze klucza co AES, ale z własnym harmonogramem kluczy i S-boxem — działa na własnej stronie w trybie ECB i CBC: Szyfrowanie / deszyfrowanie SM4. Reszta pakietu SM także tam: SM3 (skrót), SM2 (klucz publiczny) i SM9 (kryptografia oparta na tożsamości).
Autotest Uruchamia silniki strony wobec niezależnych wartości kontrolnych: wektorów znanych odpowiedzi dla wszystkich czterech trybów (wygenerowanych przez niezależną, natywną implementację), wektorów znacznika GCM z AAD i bez, sprawdzeń krzyżowych silnika WebCrypto z czysto-JS-owym silnikiem AES, cyklu GCM oraz testów negatywnych (zmieniony znacznik lub zły klucz muszą zawieść). Nic nie jest nigdzie wysyłane.
Szyfrowanie AES od podstaw
W jednym zdaniu: AES to światowy standard szyfru blokowego — miesza bloki 16-bajtowe kluczem 128, 192 lub 256-bitowym — a tryb pracy (GCM, CBC, CTR, ECB), decyduje o łączeniu bloków, roli IV i tym, czy można wykryć modyfikację; wybieraj GCM, chyba że istnieje powód, by tego nie robić.
Czym jest sam AES (FIPS 197)
Szyfr blokowy. AES (konstrukcja Rijndael, znormalizowana przez NIST w 2001 jako FIPS 197) szyfruje dokładnie 16 bajtów naraz. Długość klucza — 16, 24 lub 32 bajty — wybiera AES-128, -192 lub -256 oraz liczbę rund wewnętrznych (10, 12, 14). Każda runda miesza blok z kluczami rundowymi wyprowadzonymi z klucza, za pomocą tablic podstawień, przesunięć wierszy i mieszania kolumn. Żaden praktyczny atak nie łamie samego szyfru: rzeczywiste awarie to niemal zawsze błędy trybu, IV lub zarządzania kluczami — o tym jest reszta tej strony.
Po co w ogóle tryb? Bo wiadomości rzadko mają 16 bajtów. Tryb skleja szyfrowania bloków: ECB szyfruje bloki niezależnie; CBC wykonuje XOR każdego bloku z poprzednim szyfrogramem; CTR szyfruje licznik i wykonuje XOR z danymi jak szyfr strumieniowy; GCM opiera się na CTR i dodaje znacznik uwierzytelniający. AES pozostaje ten sam — tryb zmienia wszystko w zakresie gwarancji, jakie zapewnia.
Klucze i hasła. Klucz AES to 16, 24 lub 32 losowe bajty. Hasło ludzkie nim nie jest: opcja Hasło na tej stronie wyprowadza właściwy klucz przy użyciu PBKDF2-HMAC-SHA256 (domyślnie 600 000 iteracji, bazowy poziom OWASP 2023 — szczegóły KDF opisano w Generatorze HMAC). Nigdy nie używaj hasła tekstowego bezpośrednio jako klucza AES: jego entropia to niewielka część długości.
Dopełnianie PKCS#7; klasyczny, ale wymaga obok MAC. Błędy typu padding-oracle to klasyczna pułapka CBC.
CTR
początkowy licznik 16-bajtowy
Nie
Bez dopełnienia, działa strumieniowo, dostęp swobodny; ponowne użycie nonce pod jednym kluczem ujawnia XOR tekstów jawnych.
ECB
brak
Nie
Identyczne bloki → identyczny szyfrogram. Słynna demonstracja pingwina ECB. Tylko dla zgodności.
Zasady IV w jednym akapicie. IV nie jest sekretem — wyślij go razem z szyfrogramem — ale wymagania co do jego unikalności różnią się: CBC chce nieprzewidywalnego IV; GCM i CTR wymagają jedynie, by nigdy nie używać ponownie tego samego nonce pod tym samym kluczem (ponowne użycie nonce w GCM jest gorsze: ujawnia klucz uwierzytelniania). Przycisk Losowy IV na tej stronie korzysta z bezpiecznego generatora przeglądarki; przycisk Same zera służy do odtwarzania wektorów testowych, a nie do prawdziwych wiadomości.
Dopełnianie. CBC i ECB wymagają pełnych bloków, więc dopełnienie PKCS#7 dodaje 1..16 bajtów, każdy równy długości dopełnienia. Dlatego szyfrogramy CBC rosną nawet o 16 bajtów i dlatego odszyfrowanie złym kluczem zwykle kończy się błędem dopełnienia. CTR i GCM działają jak strumieniowe i nie potrzebują dopełnienia — długość szyfrogramu dokładnie równa się długości tekstu jawnego (wypróbuj Przykład w trybie CTR: 43 bajty wejścia, 43 bajty wyjścia).
CFB i OFB (pozostałe dwa klasyczne tryby) nie są zaimplementowane na tej stronie: działają jak strumieniowe CTR, ale bez żadnej przewagi nad nim, i przetrwały głównie w starych protokołach.
Co dodaje GCM (AEAD, znaczniki, AAD)
Szyfrowanie uwierzytelnione. GCM = szyfrowanie CTR + uwierzytelnianie GHASH po szyfrogramie, IV i AAD. Znacznik wyjściowy jest odciskiem wszystkiego: zmiana jednego bitu szyfrogramu, IV lub AAD powoduje niezgodność znacznika, więc odbiorca może udowodnić, że wiadomość jest nienaruszona i pochodzi od posiadacza klucza. CBC+HMAC osiąga to samo tylko przy poprawnym złożeniu (encrypt-then-MAC) — GCM robi to poprawnie z założenia.
AAD. Dodatkowe dane uwierzytelnione są przesyłane jawnie, ale są objęte znacznikiem: nagłówki protokołu, nazwy plików, identyfikatory algorytmów. Odbiorca musi podać identyczne bajty AAD, inaczej kontrola znacznika się nie powiedzie — o to właśnie chodzi.
Długość znacznika. Domyślny 128-bitowy znacznik to zalecenie; krótsze znaczniki (96..120 bitów) wymieniają odporność na fałszerstwa na rozmiar. Poniżej 96 bitów dowody bezpieczeństwa GCM szybko się degradują, dlatego ta strona kończy się na tym progu.
Katastrofa nonce. Ponowne użycie 12-bajtowego nonce GCM pod tym samym kluczem ujawnia XOR tekstów jawnych obu wiadomości oraz podklucz uwierzytelniania — po czym fałszerstwa są możliwe dla wszystkich przyszłych wiadomości pod tym kluczem. Systemy, które nie mogą zagwarantować unikalności, używają wariantów odpornych na błędne użycie nonce (AES-GCM-SIV, RFC 8452).
Wartości kontrolne — odtwórz je na tej stronie
Pierwszy wiersz to znany jednoblokowy przykład FIPS 197; pozostałe wygenerowano niezależną, natywną implementacją (OpenSSL przez Node.js) i ponownie zweryfikowano w silnikach tej strony. Wklej klucz, IV i dane wejściowe na stronę, aby odtworzyć każdy wiersz.
Przypadek
Dane wejściowe
Oczekiwany wynik
AES-128, pojedynczy blok (w stylu FIPS 197)
key 000102..0f, plaintext 00112233..ff
69c4e0d86a7b0430d8cdb78070b4c55a
AES-128-GCM
key 000102..0f, IV 606162..6b, plaintext 0011..ef ×2
ct 275f095bedfda377063fee326128892188377b410698ed03a022b9971bb4bdbe, tag 87ea7770714048977de2fd8dac645ecf
AES-256-GCM, to samo, ale z AAD deadbeef
key 000102..1f
ct eacab966ff15e518f48f5390be502fbc2756ccee0dcfff36a282c50bf5593ae7, tag aead900e895c88252d0388d7aefce5c8
AES-256-CBC
key 000102..1f, IV 101112..1f, plaintext 0011..ef ×2
Używanie ECB, bo nie wymaga IV. Wygoda jest pułapką: wzorce bloków przenikają wprost do szyfrogramu (zaszyfruj bitmapę, a obraz nadal będzie widoczny). ECB jest dopuszczalny tylko dla pojedynczych bloków lub losowych kluczy o długości dokładnie 16 bajtów — w praktyce nigdy z wyboru.
Ponowne użycie nonce/IV. Przy GCM lub CTR pod jednym kluczem to jedyny błąd, który psuje wszystko naraz. Systemy oparte na liczniku (przycisk Losowy IV na tej stronie) istnieją po to, by uniemożliwić ten błąd.
Traktowanie IV jako sekretu. Nie jest nim. Przechowuj go lub przesyłaj razem z szyfrogramem. Ukrywanie go nic nie daje i kusi do ponownego użycia.
Używanie hasła jako klucza."hunter2hunter2hunter2hunter2" ma 32 bajty, ale nie 256 bitów entropii — to słowo ze słownika z dopełnieniem. Wyprowadź klucz przez PBKDF2 (wbudowane na tej stronie) albo wygeneruj losowy klucz.
Zakładanie, że CBC wykrywa modyfikacje. Przerzuć bit w szyfrogramie CBC, a odszyfrowanie "się uda" z po cichu uszkodzonym tekstem jawnym. Dopiero znacznik GCM (lub jawny HMAC) ujawnia modyfikację.
Porównywanie szyfrogramów GCM pod kątem równości. Przy losowych nonce ten sam tekst jawny szyfruje się za każdym razem inaczej — to zaleta. Szyfrowanie deterministyczne to inne, specjalistyczne narzędzie.
FAQ
Czy AES-128 jest nadal bezpieczny, czy potrzebuję 256? Oba są bezpieczne wobec realistycznych atakujących; znane ataki zmniejszają margines tylko w niewielkim stopniu. AES-256 ma znaczenie głównie dla sekretów długoterminowych i odporności postkwantowej (algorytm Grovera zmniejsza moc klucza o połowę, więc AES-256 daje ok. 128 bitów).
Dlaczego openssl enc nie obsługuje GCM? Polecenie enc powstało przed AEAD i nie ma sposobu na przenoszenie znacznika; OpenSSL 3.3 dodał zamiast tego osobne polecenie aesgcm. Wynik GCM na tej stronie umieszcza znacznik w osobnym wierszu, dzięki czemu można jawnie przenosić oba elementy.
Czym jest owijanie kluczy (AES-KW)? Specjalistyczny tryb do szyfrowania innych kluczy stałymi porcjami 64-bitowymi, z własną kontrolą integralności. Nie jest tu udostępniony, bo jego wejścia i wyjścia mają kształt kluczy, a nie wiadomości — błędne użycie to norma.
Dlaczego szyfrogram CTR ma taką samą długość jak tekst jawny, a CBC jest dłuższy? CTR i GCM działają jak szyfry strumieniowe (bez dopełniania); CBC/ECB dopełniają do pełnego bloku 16-bajtowego w PKCS#7. Różnica długości jest zamierzona, nie jest błędem.
Czy mogę odszyfrować coś zaszyfrowanego gdzie indziej? Tak, jeśli znany jest dokładny tryb, klucz, IV (a w przypadku GCM także znacznik). Wiersze wyniku na tej stronie zapisują wszystkie te wartości, dzięki czemu można przenosić parametry między narzędziami — pole OpenSSL powyżej pokazuje odpowiadające im polecenia.