Skip to content

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.

Niente tracciamento Funziona nel browser Gratuito
Tutto avviene nel tuo browser — la tua chiave e i tuoi dati non lasciano mai questa pagina.
Consigliata
Dimensione chiave
Tipo di chiave
Opzioni avanzate
Testo cifrato
Ti serve la pagina dedicata alla decifratura?
Revisionato per l'accuratezza crittografica rispetto a FIPS 197, NIST SP 800-38D, OWASP e alla specifica W3C Web Crypto — Go-Tools Security Team · Jul 16, 2026

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. 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. 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. 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. 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. 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.

✗ Errato
Key type: Raw key
Key (hex): correct horse battery staple   (not hex, not 32 bytes)
✓ Corretto
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.

✗ Errato
// same key, same IV for two messages
encrypt(key, iv, a); encrypt(key, iv, b);
✓ Corretto
// 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.

✗ Errato
stored = ciphertext              // salt + IV + tag thrown away
✓ Corretto
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.

✗ Errato
assert(encrypt(msg) === encrypt(msg))   // fails — and should
✓ Corretto
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?
Con questo strumento la cifratura avviene interamente nel tuo browser — il tuo testo, la passphrase e la chiave non viaggiano mai verso un server, cosa che puoi confermare osservando la scheda Rete. Questo lo rende sicuro per imparare, fare debug e per dati personali occasionali. Non è il posto giusto per segreti di produzione, dati regolamentati o qualsiasi cosa richieda una gestione delle chiavi a lungo termine, e questo vale per qualsiasi strumento online: una pagina del browser non può offrirti archiviazione delle chiavi verificata, rotazione o controllo degli accessi. Cifra qui cose usa e getta e personali, e conserva i segreti reali in un sistema dedicato.
Si può decifrare AES senza la chiave?
No. AES non ha alcuna violazione pratica nota, quindi senza la chiave o la passphrase non esiste scorciatoia — un attaccante è ridotto a provare le chiavi una per una. AES-256 ha 2^256 chiavi possibili; anche a mille miliardi di miliardi di tentativi al secondo servirebbe comunque molto più tempo dell'età dell'universo per esplorare una frazione significativa. I rischi reali non riguardano mai il cifrario in sé: sono una passphrase debole, un IV riutilizzato, una chiave trapelata o un oracolo di padding in un sistema costruito male. Scegli una passphrase robusta e nessuno di questi problemi si applica. Chiunque pubblicizzi un 'recupero AES' senza chiave sta vendendo una truffa.
GCM o CBC — quale modalità dovrei usare?
Usa GCM. Ti offre riservatezza più un tag di autenticazione integrato a 128 bit, quindi se anche un solo byte del testo cifrato viene alterato, la decifratura fallisce invece di restituire silenziosamente dati corrotti. CBC nasconde solo i dati; da solo non può rilevare manomissioni e ha una lunga storia di vulnerabilità da oracolo di padding (Vaudenay, EUROCRYPT 2002), motivo per cui TLS 1.3 (RFC 8446) ha rimosso tutte le suite di cifratura CBC. L'unica buona ragione per scegliere CBC qui è l'interoperabilità con un sistema esistente — per esempio il comando enc di OpenSSL, che non supporta GCM.
AES-128 o AES-256 — vale la pena il 256?
Entrambi sono considerati sicuri; AES-128 non è violato ed è leggermente più veloce. AES-256 ha una chiave più grande e un margine di sicurezza maggiore, ed è la dimensione approvata nella suite CNSA 2.0 della NSA per informazioni fino al livello TOP SECRET, motivo per cui è una scelta predefinita sensata. Il costo è minimo — qualche round in più per blocco. A meno che tu non stia ottimizzando un percorso critico per le prestazioni, cifra con AES-256; il margine di sicurezza extra è praticamente gratuito nella pratica.
I miei dati vengono caricati quando cifro qui?
No. Tutta la cifratura avviene localmente tramite la Web Crypto API del browser (crypto.subtle), la stessa implementazione verificata che il tuo browser usa per HTTPS. Nulla di ciò che digiti viene inviato da nessuna parte — puoi aprire il pannello Rete degli strumenti per sviluppatori, cifrare qualcosa e osservare che non parte nessuna richiesta, oppure disconnetterti del tutto da internet e lo strumento continua a funzionare. SubtleCrypto è disponibile solo in contesti sicuri (HTTPS), il che fa parte del motivo per cui questa garanzia regge.
Qual è la differenza tra una passphrase e una chiave?
Una chiave è esattamente 128, 192 o 256 bit di dati casuali — per AES-256 sono 32 byte grezzi, di solito scritti in hex o Base64. Una passphrase è testo digitato da una persona, di qualunque lunghezza, e non è essa stessa una chiave: deve essere allungata in una chiave da una funzione di derivazione della chiave. Questo strumento lo fa automaticamente in modalità passphrase con PBKDF2-HMAC-SHA256, 600.000 iterazioni e un sale casuale. Confondere le due cose — incollare una passphrase nel campo della chiave grezza, o viceversa — è una delle ragioni più comuni per cui due sistemi non concordano su un testo cifrato. (Per token firmati anziché per la cifratura, vedi il codificatore JWT.)
Posso cifrare in modo che OpenSSL o CryptoJS possano decifrarlo?
Sì. Attiva la modalità compatibile con OpenSSL (con AES-CBC e una passphrase) e lo strumento produce il formato Salted__ che il comando enc di OpenSSL e CryptoJS comprendono, mostrandoti anche il comando openssl equivalente esatto. Scegli la funzione di derivazione della chiave corrispondente: PBKDF2 per OpenSSL moderno (il valore predefinito di openssl -pbkdf2 è 10.000 iterazioni), EVP-SHA256 per OpenSSL 1.1+ senza -pbkdf2, oppure EVP-MD5 per CryptoJS e OpenSSL 1.0.2 e versioni precedenti. Per fare il percorso inverso e leggere il testo cifrato di qualcun altro, usa lo strumento di decifratura AES.

Strumenti correlati

Vedi tutti gli strumenti →