Šifrování a dešifrování AES — GCM, CBC, CTR a ECB přímo ve vašem prohlížeči
Šifrování a dešifrování AES
Šifrujte nebo dešifrujte pomocí AES-128, AES-192 nebo AES-256 (FIPS 197) v režimu GCM (autentizované šifrování), CBC, CTR nebo ECB. Klíče jsou zadávány jako surový hex nebo bajty Base64, případně odvozeny z hesla pomocí PBKDF2-HMAC-SHA256. GCM podporuje AAD a značku zobrazuje zvlášť; výstupy CBC/CTR/ECB jsou kompatibilní s openssl enc. Pro hashe použijte generátor hashů, pro klíčované MAC generátor HMAC, pro starší šifry stránku Legacy Ciphers v této rodině. Běží zcela lokálně — klíče a otevřený text neopouštějí kartu prohlížeče. Soubory až 200 MB.
Vše, co zde zadáte, zůstane v této kartě — ale to neznamená „bezpečné pro produkční tajemství“. Paměť prohlížeče, rozšíření a kolemstojící vidí, co vložíte. Tuto stránku používejte k učení, ověřování a spolupráci mezi nástroji, ne ke zpracování živých zákaznických dat.
Směr:Režim:Výstup:
GCM = AES-GCM s 12bajtovým nonce a 128bitovou autentizační značkou (AEAD: důvěrnost + integrita). Výchozí volba, pokud jde o bezpečnost.
Klíč(surové bajty: 16, 24 nebo 32 bajtů = AES-128/192/256; o velikosti rozhoduje délka vloženého vstupu)
Hex toleruje mezery, dvojtečky a předpony 0x.
Sůl (hex, 8–16 bajtů):
Iterace:Velikost klíče:
Sůl se přenáší spolu se šifrovaným textem — kdo dešifruje, potřebuje stejné heslo, sůl, počet iterací a velikost klíče. OWASP doporučuje alespoň 600 000 iterací PBKDF2-HMAC-SHA256.
IV / nonce(GCM: 12 bajtů; CBC/CTR: 16 bajtů — hex)
V režimu GCM nebo CTR nikdy nepoužívejte stejný nonce se stejným klíčem.
AAD(dodatečná ověřovaná data — ověřena, ale nešifrována, volitelné)
Délka značky:
Autentizační značka(hex, jak ji tato stránka vypíše při šifrování — nutné k dešifrování)
Plaintext text (the data to encrypt, UTF-8 encoded)
Vyberte soubor nebo jej sem přetáhněte Soubor se čte lokálně po blocích 8 MB; nic se nenahrává. Až 200 MB.
Ciphertext (jeden řádek: režim, velikost klíče, hodnota; parametry na řádcích níže)
Řádky s parametry zaznamenávají přesné čtení klíče, IV, velikost AAD a značku, takže výsledek zkopírovaný z jednoho počítače lze vždy zreprodukovat na jiném.
Který režim zvolit? GCM je výchozí volba: šifruje a ověřuje — řádek se značkou umožňuje zjistit neoprávněnou změnu (zkuste dešifrovat s jedním převráceným bajtem značky a stránka odmítne). CBC skrývá vzory bloků, ale nenabízí integritu; pokud jej musíte použít, kombinujte jej s HMAC (viz generátor HMAC). CTR mění AES na proudovou šifru — bez výplně, ale opakovaný nonce se stejným klíčem je katastrofální u CTR i GCM. ECB je zde jen pro kompatibilitu a výuku: stejné otevřené bloky se šifrují na stejné šifrované bloky (proslulý ECB tučňák).
Spolupráce s OpenSSL — výstupy CBC a CTR z této stránky (výplň PKCS#7, surový klíč) lze přenést příkazovým řádkem openssl enc: openssl enc -aes-256-cbc -K <64-hex-klíč> -iv <32-hex-iv> -in zprava.txt -out zprava.enc openssl enc -d -aes-256-cbc -K <klíč> -iv <iv> -in zprava.enc -out zprava.txt Totéž funguje s -aes-128-cbc, -aes-192-cbc, -aes-256-ctr (IV o 16 bajtech = počáteční blok počítadla). Pozor: openssl encnepodporuje GCM — pro autentizované šifrování použijte tuto stránku nebo openssl aesgcm z OpenSSL 3.3+.
Potřebujete místo toho čínskou státní šifru? SM4 (GB/T 32907-2016) — blková šifra předepsaná pro čínskou komerční kryptografii, se stejnou 128bitovou velikostí bloku a klíče jako AES, ale s vlastním plánem klíčů a S-boxem — běží na samostatné stránce v režimu ECB a CBC: Šifrování a dešifrování SM4. Ostatní části rodiny SM jsou tam také: SM3 (hash), SM2 (veřejný klíč) a SM9 (kryptografie založená na identitě).
Autotest Spustí enginy stránky proti nezávislým kotvám: testovací vektory se známými výsledky pro všechny čtyři režimy (vygenerované nezávislou nativní implementací), testovací vektory značky GCM s AAD i bez něj, křížové kontroly enginu WebCrypto proti čistě JS implementaci AES, kulatou cestu GCM a negativní testy (pozměněná značka a špatný klíč musí selhat). Nic se nikam neodesílá.
Šifrování AES od základu
Stručně: AES je celosvětově standardní bloková šifra — šifruje 16bajtové bloky klíčem o délce 128, 192 nebo 256 bitů — a režim, ve kterém ji použijete (GCM, CBC, CTR, ECB), určuje, jak se bloky řetězí, k čemu slouží IV a zda lze zjistit neoprávněnou změnu; pokud nemáte důvod volit jinak, použijte GCM.
Co je AES (FIPS 197)
Bloková šifra. AES (návrh Rijndael, normalizovaný NIST v roce 2001 jako FIPS 197) šifruje vždy 16 bajtů. Délka klíče — 16, 24 nebo 32 bajtů — určuje AES-128, -192 nebo -256 a počet vnitřních kol (10, 12, 14). Každé kolo mísí blok s podklíči odvozenými z klíče pomocí substitučních tabulek, posunů řádků a míchání sloupců. Žádný praktický útok nerozbíjí samotnou šifru: skutečná selhání jsou téměř vždy chyby v režimu, IV nebo správě klíčů, čemuž se věnuje zbytek této stránky.
Proč vůbec režim? Protože zprávy jsou zřídka dlouhé přesně 16 bajtů. Režim spojuje šifrování jednotlivých bloků: ECB šifruje bloky nezávisle; CBC XORuje každý blok s předchozím šifrovaným blokem; CTR šifruje počítadlo a XORuje jej s daty jako proudová šifra; GCM staví na CTR a přidává autentizační značku. AES zůstává stejný — režim mění všechno, co se týká záruk, které získáte.
Klíče a hesla. Klíč AES je 16, 24 nebo 32 náhodných bajtů. Lidské heslo takové není: volba Heslo na této stránce odvodí správný klíč pomocí PBKDF2-HMAC-SHA256 (výchozích 600 000 iterací, základ OWASP 2023 — podrobnosti o KDF najdete v generátoru HMAC). Heslo nikdy nepoužívejte přímo jako klíč AES: jeho entropie je jen zlomkem délky.
Výplň PKCS#7; klasický režim, ale potřebuje vedle sebe MAC. Chyby typu padding oracle jsou klasickou pastí CBC.
CTR
16bajtové počáteční počítadlo
Ne
Bez výplně, funguje jako proudová šifra, umožňuje přímý přístup; opakování nonce se stejným klíčem prozradí XOR otevřených textů.
ECB
žádný
Ne
Stejné bloky → stejný šifrovaný text. Ukázka ECB-tučňák. Jen pro kompatibilitu.
Pravidla pro IV v kostce. IV není tajný — posílejte jej spolu se šifrovaným textem — ale požadavky na jeho jedinečnost se liší: CBC vyžaduje nepředvídatelný IV; GCM a CTR vyžadují pouze, aby se se stejným klíčem nikdy nepoužil stejný nonce (u GCM je opakování nonce ještě horší: prozradí klíč pro autentizaci). Tlačítko Náhodný IV na této stránce používá bezpečný generátor náhodných čísel prohlížeče; tlačítko Samé nuly slouží k reprodukci testovacích vektorů, ne pro skutečné zprávy.
Výplň. CBC a ECB potřebují celé bloky, proto PKCS#7 přidá 1 až 16 bajtů, každý s hodnotou délky výplně. Proto šifrované texty CBC narůstají až o 16 bajtů a proto dešifrování špatným klíčem obvykle selže chybou výplně. CTR a GCM fungují jako proudové šifry a výplň nepotřebují — délka šifrovaného textu se přesně rovná délce otevřeného textu (vyzkoušejte ukázku v režimu CTR: 43 bajtů na vstupu, 43 bajtů na výstupu).
CFB a OFB (zbývající dva klasické režimy) nejsou na této stránce implementovány: fungují jako proudové šifry podobně jako CTR, ale bez jakékoli výhody a přežívají hlavně ve starých protokolech.
Co přidává GCM (AEAD, značky, AAD)
Autentizované šifrování. GCM = šifrování CTR + autentizátor GHASH nad šifrovaným textem, IV a AAD. Výstupní značka je otiskem všeho: změníte-li jediný bit šifrovaného textu, IV nebo AAD, značka přestane odpovídat, takže příjemce může ověřit, že zpráva je nepoškozená a pochází od držitele klíče. CBC+HMAC dosáhne totéž jen při správném složení (šifrovat-pak-MAC) — GCM to řeší už konstrukcí.
AAD. Dodatečná ověřovaná data se přenášejí v čitelné podobě, ale značka je kryje: hlavičky protokolu, názvy souborů, identifikátory algoritmů. Příjemce musí dodat přesně stejné bajty AAD, jinak kontrola značky selže — to je smysl věci.
Délka značky. Výchozí 128bitová značka je doporučení; kratší značky (96 až 120 bitů) obchodují odolnost proti padělání za menší velikost. Pod 96 bitů se bezpečnostní důkazy GCM rychle zhoršují, proto tato stránka dále nejde.
Katastrofa s nonce. Opakované použití 12bajtového nonce GCM se stejným klíčem prozradí XOR otevřených textů obou zpráv a podklíč pro autentizaci — poté jsou možné padělky všech budoucích zpráv pod tímto klíčem. Systémy, které nemohou zaručit jedinečnost, používají varianty odolné vůči chybnému nonce (AES-GCM-SIV, RFC 8452).
Kontrolní hodnoty — reprodukujte je na této stránce
První řádek je známý jednoblokový příklad podle FIPS 197; ostatní byly vygenerovány nezávislou nativní implementací (OpenSSL přes Node.js) a znovu ověřeny na enginech této stránky. Vložte klíč, IV a vstup do stránky a každý řádek lze reprodukovat.
Případ
Vstupy
Očekávaný výstup
AES-128, jeden blok (podle 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, stejné, ale s AAD deadbeef
key 000102..1f
ct eacab966ff15e518f48f5390be502fbc2756ccee0dcfff36a282c50bf5593ae7, tag aead900e895c88252d0388d7aefce5c8
AES-256-CBC
key 000102..1f, IV 101112..1f, plaintext 0011..ef ×2
Použití ECB kvůli tomu, že nepotřebuje IV. Tato výhoda je past: vzory bloků přecházejí přímo do šifrovaného textu (zašifrujete-li bitmapu, obrázek je stále vidět). ECB je přijatelné jen pro jednotlivé bloky nebo přesně 16bajtové náhodné klíče — v praxi nikdy záměrně.
Opakované použití nonce/IV. U GCM nebo CTR se stejným klíčem je to jediná chyba, která rozbije všechno najednou. Systémy založené na počítadlech (tlačítko Náhodný IV na této stránce) existují proto, aby to bylo nemožné.
Považování IV za tajný. Není tajný. Ukládejte jej nebo přenášejte spolu se šifrovaným textem. Jeho skrývání nic nepřináší a vede k opakovanému použití.
Použití hesla jako klíče."hunter2hunter2hunter2hunter2" má 32 bajtů, ale nemá 256 bitů entropie — je to slovo ze slovníku s výplní. Odvoďte klíč pomocí PBKDF2 (je zabudován v této stránce) nebo vygenerujte náhodný klíč.
Předpoklad, že CBC odhalí neoprávněnou změnu. Změníte-li v šifrovaném textu CBC jeden bit, dešifrování „proběhne“ s tiše poškozeným otevřeným textem. Změnu zviditelní jen značka GCM (nebo explicitní HMAC).
Porovnávání šifrovaných textů GCM. Při náhodných nonce se stejný otevřený text pokaždé zašifruje jinak — a to je vlastnost. Deterministické šifrování je jiný, specializovaný nástroj.
Časté dotazy
Je AES-128 ještě bezpečný, nebo je potřeba 256? Oba jsou bezpečné proti realistickým útočníkům; nejlepší známé útoky zmenšují rezervu jen nepatrně. AES-256 má význam hlavně pro dlouhodobě chráněná data a z hlediska postkvantové bezpečnosti (Groverův algoritmus snižuje sílu klíče na polovinu, takže AES-256 zůstává na ekvivalentu cca 128 bitů).
Proč openssl enc nepodporuje GCM? Příkaz enc vznikl před AEAD a nemá způsob, jak přenášet značku; OpenSSL 3.3 proto přidal samostatný příkaz aesgcm. Výstup GCM na této stránce uvádí značku na samostatném řádku, takže ji lze přesouvat zvlášť.
Co je zabalení klíčů (AES-KW)? Speciální režim pro šifrování jiných klíčů po pevných blocích 64 bitů se samostatnou kontrolou integrity. Zde není nabízen, protože jeho vstupy a výstupy mají tvar klíčů, nikoli zpráv, a chybné použití je běžné.
Proč má šifrovaný text CTR stejnou délku jako otevřený text, ale u CBC je delší? CTR a GCM fungují jako proudová šifra (bez výplně); CBC a ECB doplňují výplní PKCS#7 do celého 16bajtového bloku. Rozdíl v délce je záměrný, není to chyba.
Lze dešifrovat něco, co bylo zašifrováno jinde? Ano, pokud znáte přesný režim, klíč a IV (u GCM také značku). Výstupní řádky této stránky zaznamenávají všechny tyto údaje, takže parametry lze přenést mezi nástroji — kontrolní příkazy OpenSSL jsou uvedeny v boxu výše.