Strumento di Crittografia AES — GCM, CBC e CTR
Crittografia AES online gratuita — AES-128/192/256, GCM/CBC/CTR, passphrase (PBKDF2) o chiave grezza. Funziona al 100% nel browser; nulla viene caricato.
Opzioni avanzate
Non riutilizzare mai un IV con la stessa chiave. Lascia vuoto per generare un IV casuale sicuro.
Cos'è la Cifratura AES?
AES (Advanced Encryption Standard) è un cifrario a blocchi simmetrico standardizzato dal NIST nella FIPS 197 nel 2001, basato sul design Rijndael di Joan Daemen e Vincent Rijmen. Cifra i dati in blocchi fissi di 128 bit usando una chiave a 128, 192 o 256 bit, e la stessa chiave sia cifra sia decifra. È il cavallo di battaglia della crittografia moderna, e protegge di tutto, dal traffico HTTPS alla cifratura dei dischi.
Un cifrario a blocchi puro rimescola solo un blocco di 16 byte, quindi AES viene sempre eseguito all'interno di una modalità operativa che concatena i blocchi tra loro. Questo strumento ne offre tre, tutte fornite nativamente dalla Web Crypto API del browser: GCM, CBC e CTR. GCM (Galois/Counter Mode, NIST SP 800-38D) è il valore predefinito consigliato perché è autenticato — produce un tag di autenticazione a 128 bit insieme al testo cifrato, così qualunque manomissione viene rilevata al momento della decifratura. CBC e CTR forniscono solo riservatezza; da soli non possono dirti se il testo cifrato è stato alterato, motivo per cui TLS 1.3 (RFC 8446) ha eliminato tutte le suite di cifratura CBC a favore di modalità autenticate come GCM.
Noterai che qui non c'è la modalità ECB, ed è deliberato. ECB cifra ogni blocco di testo in chiaro identico nello stesso blocco di testo cifrato, quindi le strutture su larga scala trapelano direttamente — la famosa immagine del 'pinguino ECB' resta visibilmente un pinguino anche dopo la cifratura. La Web Crypto API omette ECB esattamente per questo motivo (implementa solo AES-CBC, AES-CTR e AES-GCM), e anche noi facciamo lo stesso. Se devi interoperare con un sistema legacy che usava ECB, considera questo un motivo per migrarlo, non per riprodurne la debolezza.
Poiché la maggior parte delle persone digita una passphrase invece di una chiave casuale di 32 byte, lo strumento deriva la chiave AES dalla tua passphrase con PBKDF2-HMAC-SHA256 a 600.000 iterazioni e un sale casuale di 16 byte, in linea con le attuali linee guida OWASP sulla conservazione delle password (e con la NIST SP 800-132, che richiede un sale di almeno 128 bit). Questo rende lenta la forza bruta contro una passphrase debole, ma non è magia: questo è uno strumento per imparare le modalità, fare debug del testo cifrato e per dati personali occasionali — non per proteggere segreti di produzione, che appartengono a un sistema dedicato di gestione delle chiavi. Per una passphrase robusta, generane una con il nostro generatore di password casuali; per una chiave davvero casuale, usa il generatore di chiavi segrete.
// 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
} Caratteristiche Principali
Cifratura autenticata GCM per impostazione predefinita
GCM produce il testo cifrato più un tag di autenticazione a 128 bit, quindi la decifratura fallisce in modo evidente se anche un solo byte è stato cambiato. CBC e CTR sono a un clic di distanza per quando devi interoperare con essi.
Testo cifrato autosufficiente
La modalità passphrase impacchetta il sale casuale, l'IV e il tag in un'unica stringa Base64, così chi decifra ha bisogno solo della passphrase — non ci sono campi separati da copiare o perdere.
Passphrase o chiave grezza
Digita una passphrase (allungata con PBKDF2-HMAC-SHA256, 600.000 iterazioni) oppure incolla una chiave esatta a 128/192/256 bit in hex o Base64, con un badge del conteggio dei byte in tempo reale che conferma la lunghezza.
Output compatibile con OpenSSL
Attiva la modalità OpenSSL per produrre il formato Salted__ letto dal comando enc di OpenSSL e da CryptoJS, con il comando CLI equivalente mostrato in tempo reale così puoi riprodurlo in un terminale.
100% nel tuo browser
Ogni byte viene cifrato localmente con la Web Crypto API. Apri la scheda Rete e vedrai che nulla lascia la pagina — funziona persino offline.
Output in Base64 o Hex
Copia il risultato nella codifica che il tuo sistema di destinazione si aspetta, e ispeziona le lunghezze di sale, IV, testo cifrato e tag nella striscia di scomposizione dei segmenti.
Esempi di Cifratura AES
GCM + passphrase (autosufficiente, non deterministico)
La veloce volpe marrone salta sopra il cane pigro.
sale (16 B) + IV (12 B) + testo cifrato + tag (16 B), codificato in Base64 — un valore nuovo a ogni esecuzione
Con Modalità GCM, Dimensione chiave 256, Tipo di chiave Passphrase e la passphrase hunter2, questa frase viene cifrata in un'unica stringa Base64 autosufficiente. Cifrala due volte e otterrai due output completamente diversi — è voluto. La modalità passphrase genera un sale nuovo di 16 byte e un IV nuovo di 12 byte per ogni cifratura, quindi lo stesso testo in chiaro non produce mai lo stesso testo cifrato e un osservatore non può capire che due messaggi sono uguali. La striscia di segmenti sotto l'output mostra la struttura esatta: prima il sale, poi l'IV, poi il testo cifrato con il suo tag GCM a 128 bit accodato. Per decifrare, il destinatario ha bisogno solo della passphrase e della stessa modalità e dimensione della chiave — sale, IV e tag viaggiano tutti dentro la stringa.
Output compatibile con OpenSSL (CBC + passphrase)
Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attiva la modalità compatibile con OpenSSL con Modalità CBC, Tipo di chiave Passphrase, la passphrase correct-horse, KDF PBKDF2 e 10.000 iterazioni. Lo strumento produce quindi il formato OpenSSL Salted__: Base64 che inizia sempre con U2FsdGVkX1, che è la codifica Base64 dell'intestazione Salted__ di 8 byte. Poiché ogni volta viene generato un nuovo sale casuale di 8 byte, la stringa esatta cambia a ogni esecuzione, ma ognuna si decifra da riga di comando con: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — che stampa Attack at dawn!. Scegli EVP-MD5 invece di PBKDF2 per essere compatibile con CryptoJS o OpenSSL 1.0.2 e versioni precedenti. Nota che openssl enc non supporta GCM, quindi la modalità OpenSSL è solo CBC.
Come Cifrare Testo con AES
- 1
Scegli una modalità e una dimensione della chiave
Lascia la Modalità su GCM (consigliata) e la Dimensione chiave su 256 per il valore predefinito più robusto e sensato. Passa a CBC o CTR solo se un sistema con cui devi interagire lo richiede.
- 2
Scegli passphrase o chiave grezza
Lascia il Tipo di chiave su Passphrase e inserisci una passphrase robusta, oppure passa a Chiave grezza e incolla una chiave esatta a 128/192/256 bit in hex o Base64. Il badge del conteggio dei byte conferma se la tua chiave grezza ha una lunghezza valida.
- 3
Inserisci il testo da cifrare
Digita o incolla il tuo testo in chiaro. La cifratura avviene automaticamente mentre scrivi, interamente nel tuo browser — senza andata e ritorno con un pulsante e senza caricamenti.
- 4
Copia il testo cifrato autosufficiente
Il risultato in Base64 a destra contiene già il sale, l'IV e il tag di autenticazione. Usa la striscia di segmenti per vedere la struttura dei byte, poi fai clic su Copia. Passa la codifica dell'output a Hex se il sistema di destinazione se lo aspetta.
- 5
Decifralo di nuovo quando ti serve
Fornisci al destinatario il testo cifrato, la passphrase e la stessa modalità e dimensione della chiave, oppure apri la pagina di decifratura AES per invertirlo da solo.
Errori Comuni nella Cifratura AES
Confondere una passphrase con una chiave grezza
Una chiave grezza deve essere esattamente 16, 24 o 32 byte di dati casuali (inseriti in hex o Base64); una passphrase è qualsiasi testo e deve prima essere allungata da una KDF. Selezionare Chiave grezza e incollare una passphrase umana genera un errore di lunghezza oppure produce una chiave debole.
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)
Riutilizzare un IV con la stessa chiave
L'IV deve essere unico per messaggio sotto una data chiave. Riutilizzarlo è fatale per GCM (può far trapelare la chiave di autenticazione) e rompe la riservatezza per CBC e CTR. Lascia che sia lo strumento a generare un nuovo IV casuale ogni volta.
// 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);
Perdere il sale, l'IV o il tag
Se copi solo i byte del testo cifrato e scarti il sale/IV anteposti — o il tag GCM accodato — i dati non potranno mai essere decifrati. Conserva l'intera stringa autosufficiente, non solo la parte centrale.
stored = ciphertext // salt + IV + tag thrown away
stored = salt + iv + ciphertext + tag // the full Base64 string
Aspettarsi che l'output GCM coincida a ogni esecuzione
GCM (e in generale la modalità passphrase) usa un sale e un IV casuali, quindi lo stesso testo viene cifrato in una stringa Base64 diversa ogni volta. È una caratteristica di sicurezza, non un bug — significa che un intercettatore non può capire se due testi cifrati corrispondono allo stesso messaggio.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
assert(decrypt(encrypt(msg)) === msg) // this is what must hold
Cosa Puoi Fare con la Cifratura AES
- Impara come si comportano le modalità AES
- Passa da GCM a CBC a CTR con lo stesso input per vedere come cambiano autenticazione, lunghezza dell'IV e dimensione del testo cifrato. Un modo pratico per capire cosa specifica realmente la NIST SP 800-38D.
- Produci testo cifrato leggibile da un altro sistema
- Genera un output nel formato OpenSSL Salted__ (o come chiave grezza più IV) così che un backend, uno script o un collega che usa openssl o una libreria crittografica possa decifrarlo senza attriti.
- Cifra una breve nota o un frammento
- Proteggi un pezzo di testo personale occasionale — una frase di recupero che stai spostando tra dispositivi, un frammento in un ticket di supporto — con una passphrase che conosci solo tu. Non per segreti regolamentati o di produzione.
- Prototipa un formato di cifratura
- Definisci qui la struttura di sale/IV/tag e le impostazioni della KDF prima di scrivere il codice, usando la scomposizione dei segmenti per confermare l'ordine e le lunghezze dei byte.
- Genera vettori di test
- Crea un testo cifrato noto con una passphrase e una modalità fisse per alimentare i tuoi test di decifratura, poi verifica il ciclo completo sulla pagina di decifratura AES.
Modalità AES e Derivazione della Chiave
- GCM (Galois/Counter Mode) — autenticato, consigliato
- Riservatezza più un tag di autenticazione a 128 bit (NIST SP 800-38D). Usa un IV a 96 bit (12 byte), generato casualmente a ogni cifratura, e sia la cifratura sia la decifratura si parallelizzano bene. L'unica regola che non devi mai infrangere: non riutilizzare mai un IV con la stessa chiave. La SP 800-38D limita una singola chiave a circa 2^32 IV generati casualmente, e una ripetizione fa trapelare lo XOR di due testi in chiaro e può persino esporre la chiave di autenticazione che protegge il tag. Ideale per quasi tutto.
- CBC (Cipher Block Chaining) — solo riservatezza
- Ogni blocco viene combinato in XOR con il blocco di testo cifrato precedente, usando un IV casuale di 16 byte. Non ha autenticazione integrata, quindi va abbinato a un MAC separato — cifra-poi-MAC, per esempio con il nostro generatore HMAC — ed è storicamente soggetto ad attacchi da oracolo di padding (Vaudenay, EUROCRYPT 2002). Offerto qui per interoperabilità con OpenSSL e sistemi più datati.
- CTR (Counter) — solo riservatezza, tipo stream
- Trasforma AES in un cifrario a flusso cifrando un contatore, quindi funziona con qualsiasi lunghezza in byte senza padding e i blocchi si parallelizzano liberamente. Come CBC, non fornisce integrità da solo, e riutilizzare il contatore/IV sotto la stessa chiave è catastrofico. Utile quando serve accesso casuale o semantica di streaming.
- ECB — non offerto (per design)
- Electronic Codebook cifra ogni blocco in modo indipendente, quindi blocchi di testo in chiaro identici producono testo cifrato identico e i pattern trapelano — il famigerato 'pinguino ECB'. La Web Crypto API deliberatamente non lo implementa, e nemmeno noi. Se un sistema legacy richiede ECB, trattalo come un bug da correggere, non come un formato da riprodurre.
- Derivazione della chiave: 600.000 contro 10.000 contro 1 iterazione
- Nella modalità passphrase predefinita, questo strumento usa PBKDF2-HMAC-SHA256 a 600.000 iterazioni (lo stesso hash SHA-256 applicato centinaia di migliaia di volte) con un sale di 16 byte, secondo OWASP. Nella modalità compatibile con OpenSSL, PBKDF2 usa per impostazione predefinita solo 10.000 iterazioni (il valore predefinito di openssl enc), e la KDF legacy EVP_BytesToKey usata da CryptoJS e da OpenSSL datato esegue un singolo passaggio MD5 — ordini di grandezza più debole. Più iterazioni significano una forza bruta più lenta per tentativo, motivo per cui il valore predefinito moderno è molto più alto. Argon2 e scrypt sono ancora più robusti ma non fanno parte di Web Crypto, quindi restano fuori portata qui; per la conservazione delle password, segui OWASP e preferisci Argon2id.
Best Practice per la Cifratura AES
- Preferisci GCM a meno che un sistema con cui interagisci non richieda altrimenti
- La cifratura autenticata rileva manomissioni che CBC e CTR lasciano passare silenziosamente. Scendi a CBC o CTR solo per interoperabilità, e aggiungi un MAC se lo fai.
- Usa un IV casuale nuovo per ogni messaggio
- Lo strumento lo fa automaticamente. Se sovrascrivi l'IV manualmente, non riutilizzarne mai uno con la stessa chiave — per GCM una ripetizione è catastrofica, e per CBC rompe la sicurezza semantica.
- Scegli passphrase robuste e chiavi davvero casuali
- PBKDF2 rallenta la forza bruta ma non può salvare una passphrase debole. Genera una passphrase lunga con il generatore di password, oppure una chiave davvero casuale con il generatore di chiavi segrete.
- Conserva sale, IV e tag insieme al testo cifrato
- Non sono segreti, ma la decifratura fallisce senza di essi. Il formato autosufficiente di questo strumento li raggruppa tutti e tre; se usi la modalità con chiave grezza e testo cifrato nudo, copia l'IV separatamente e conservalo insieme al testo cifrato.
- Non cifrare segreti di produzione o regolamentati in nessuno strumento online
- Anche se è completamente lato client, uno strumento del browser serve per imparare, fare debug e per casi personali occasionali. I segreti reali appartengono a un sistema di gestione delle chiavi verificato, con gestione e rotazione delle chiavi controllate. AES-256 in sé è robusto — approvato nella suite CNSA 2.0 della NSA per informazioni fino al livello TOP SECRET — e le violazioni nel mondo reale derivano da errori di implementazione, non dal cifrario.
Domande Frequenti sulla Cifratura AES
È sicuro cifrare testo online?
Si può decifrare AES senza la chiave?
GCM o CBC — quale modalità dovrei usare?
AES-128 o AES-256 — vale la pena il 256?
I miei dati vengono caricati quando cifro qui?
Qual è la differenza tra una passphrase e una chiave?
Posso cifrare in modo che OpenSSL o CryptoJS possano decifrarlo?
Strumenti correlati
Vedi tutti gli strumenti →Strumento di Decifratura AES — OpenSSL e CryptoJS
Strumenti di sicurezza
Decifra AES online — GCM/CBC/CTR, passphrase o chiave grezza, rileva "U2FsdGVkX1" (OpenSSL/CryptoJS). 100% nel browser, le chiavi restano sul dispositivo.
Generatore e verificatore di hash Bcrypt
Strumenti di sicurezza
Genera e verifica hash bcrypt delle password online: costo regolabile, prefissi $2b$/$2a$/$2y$. 100% nel tuo browser; la password non viene mai caricata.
Generatore HMAC e Verificatore di Firma
Strumenti di sicurezza
Generatore e verificatore HMAC online e gratuito. Calcola HMAC-SHA256/SHA1/SHA384/SHA512 con chiavi in Testo, Hex o Base64 e output Hex/Base64/Base64URL. 100% nel tuo browser — le chiavi non lasciano mai la pagina.
Decodificatore JWT
Strumenti di sicurezza
Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.
Codificatore e Generatore JWT
Strumenti di sicurezza
Generatore JWT online gratis. Costruisci header e payload, firma con HS256, RS256 o ES256 all'istante nel browser; segreto e chiave non lasciano il dispositivo.
Generatore di segreti JWT — HS256/384/512
Strumenti di sicurezza
Genera online un segreto JWT robusto e conforme alle RFC per HS256/384/512 — 100% nel tuo browser, mai inviato a un server. base64url, base64 o hex.