Skip to content

Strumento di Decifratura AES — OpenSSL e CryptoJS

Decifra AES online — GCM/CBC/CTR, passphrase o chiave grezza, rileva "U2FsdGVkX1" (OpenSSL/CryptoJS). 100% nel browser, le chiavi restano sul dispositivo.

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 in chiaro
Ti serve la pagina dedicata alla cifratura?
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

Come Funziona la Decifratura AES

La decifratura AES è l'esatto inverso della cifratura: la stessa chiave simmetrica che ha rimescolato i dati esegue i round del cifrario al contrario per recuperare i byte originali. Poiché AES è simmetrico, non esiste una 'chiave di decifratura' separata — devi fornire la chiave o passphrase, la modalità e l'IV identici usati per cifrare. Se i parametri sono giusti, il testo in chiaro torna byte per byte; se ne sbagli uno, ottieni un errore o dati illeggibili.

Per decifrare correttamente, quattro cose devono corrispondere esattamente alla cifratura: la chiave (o la passphrase più le sue impostazioni di derivazione della chiave), la modalità operativa (GCM, CBC o CTR), l'IV o nonce e — per GCM — il tag di autenticazione. Se ne manca anche solo una, il risultato è un errore netto (un fallimento di autenticazione GCM, un errore di padding CBC) oppure dati illeggibili silenziosi (CTR, o CBC con l'IV sbagliato). Questo strumento legge il sale, l'IV e il tag dal testo cifrato al posto tuo quando sono impacchettati al suo interno, e diagnostica il fallimento quando qualcosa non coincide.

Il testo cifrato arriva in alcune forme diverse, e questo strumento ne comprende tre. Il formato 1 è il nostro layout autosufficiente con passphrase: un sale di 16 byte, poi l'IV, poi il testo cifrato (con il tag GCM accodato in modalità GCM) — si decifra solo con la passphrase. Il formato 2 è il layout con chiave grezza: l'IV anteposto al testo cifrato, oppure testo cifrato 'nudo' dove fornisci l'IV separatamente. Il formato 3 è il layout OpenSSL, prodotto dal comando openssl enc e da CryptoJS.

Vale la pena riconoscere a colpo d'occhio quel formato OpenSSL. Inizia con gli 8 byte ASCII Salted__, seguiti da un sale di 8 byte e poi dal testo cifrato, e quando il tutto viene codificato in Base64 quei primi byte risultano sempre come prefisso U2FsdGVkX1. Quindi se un testo cifrato che ti è stato consegnato inizia con U2FsdGVkX1, è quasi certamente stato prodotto da openssl enc o da una chiamata CryptoJS AES.encrypt(text, passphrase). CryptoJS deriva la sua chiave con la funzione legacy EVP_BytesToKey usando un singolo passaggio MD5, mentre l'openssl moderno usa PBKDF2 — motivo per cui scegliere la giusta funzione di derivazione della chiave è tutto il gioco quando si decifrano questi casi. Se il tuo input è Base64 e vuoi solo vedere i byte grezzi, il nostro decodificatore Base64 te li mostrerà. Per creare testo cifrato in questi formati, usa lo strumento di cifratura AES.

// AES-256-GCM decrypt 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 aesGcmDecrypt(base64, passphrase) {
  const enc = new TextEncoder();
  const packed = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
  const salt = packed.slice(0, 16), iv = packed.slice(16, 28); // salt(16) | iv(12)
  const ct = packed.slice(28);                                 // ciphertext + tag
  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, ['decrypt']);
  const plain = await crypto.subtle.decrypt(
    { name: 'AES-GCM', iv }, key, ct);        // throws if the tag fails
  return new TextDecoder().decode(plain);     // recovered plaintext
}

Caratteristiche Principali

Rileva automaticamente l'output di OpenSSL e CryptoJS

Incolla un testo cifrato che inizia con U2FsdGVkX1 e lo strumento riconosce il formato Salted__ offrendo un passaggio con un clic al flusso di decifratura corrispondente, così non ti scontri mai con un errore senza uscita.

Tre funzioni di derivazione della chiave

Decifra tutte le generazioni del formato openssl enc: PBKDF2 con un numero di iterazioni personalizzato, EVP_BytesToKey con SHA-256, oppure il singolo passaggio MD5 legacy usato da CryptoJS.

Spiega perché la decifratura è fallita

Invece di un errore generico ottieni una diagnosi: chiave errata contro IV errato, un fallimento di autenticazione GCM, un errore di padding CBC, contaminazione base64, oppure 'questo sembra un testo cifrato dell'era MD5, prova EVP-MD5'.

Comando openssl equivalente mostrato in tempo reale

Vedi il comando esatto openssl enc -d che riproduce la decifratura da riga di comando, numero di iterazioni incluso, così puoi verificare il risultato fuori dal browser.

Passphrase o chiave grezza, GCM/CBC/CTR

Gestisce testo cifrato autosufficiente con passphrase, testo cifrato con chiave grezza con un IV anteposto o fornito separatamente, e tutte e tre le modalità Web Crypto.

100% nel tuo browser

Testo cifrato e chiavi vengono elaborati localmente con la Web Crypto API e non vengono mai caricati — puoi verificarlo con la scheda Rete o disconnettendoti.

Esempi di Decifratura AES

Decifra un testo cifrato autosufficiente con passphrase (GCM)

sale(16) ‖ iv(12) ‖ testo cifrato ‖ tag(16), Base64 — dalla pagina di cifratura
La veloce volpe marrone salta sopra il cane pigro.

Questo è l'inverso dell'esempio GCM della pagina di cifratura. Prendi la stringa Base64 autosufficiente che ha prodotto per la passphrase hunter2, incollala qui con Modalità GCM, Dimensione chiave 256, Tipo di chiave Passphrase e la stessa passphrase hunter2, e la frase originale torna a comparire. Non devi inserire un sale o un IV separatamente — lo strumento legge il sale di 16 byte e l'IV di 12 byte dall'inizio della stringa, deriva la chiave con PBKDF2-HMAC-SHA256 (600.000 iterazioni) e verifica il tag GCM a 128 bit accodato prima di restituire qualunque testo. Fai clic su Carica esempio nella pagina di cifratura per generare una stringa nuova, poi decifrala qui.

Decifra un output reale di OpenSSL / PBKDF2

U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!

Questo è un genuino output di openssl enc. Incollalo, passa alla modalità OpenSSL (Modalità CBC, Tipo di chiave Passphrase), inserisci la passphrase correct-horse, scegli la funzione di derivazione della chiave PBKDF2 e imposta le iterazioni a 10.000 — il testo in chiaro è Attack at dawn!. Il prefisso U2FsdGVkX1 ha indicato allo strumento che si trattava del formato Salted__, e il sale di 8 byte si trova subito dopo quell'intestazione dentro il Base64. Puoi riprodurre la decifratura esatta da riga di comando: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. Se un testo cifrato simile fallisce con PBKDF2, è probabile che sia stato creato da CryptoJS — passa la KDF a EVP-MD5 e riprova. Fai clic su Carica esempio OpenSSL per compilare automaticamente questi valori.

Come Decifrare un Testo Cifrato AES

  1. 1

    Incolla il testo cifrato

    Rilascia il tuo testo cifrato in Base64 o Hex nel campo di input. Se inizia con U2FsdGVkX1, lo strumento lo segnala come formato OpenSSL/CryptoJS e offre di passare alla modalità corretta.

  2. 2

    Imposta il formato e la modalità

    Per una stringa autosufficiente prodotta da questo strumento, mantieni la modalità Passphrase e la GCM/CBC/CTR corrispondente. Per output OpenSSL/CryptoJS, accetta il passaggio (CBC + passphrase). Per dati con chiave grezza, scegli Chiave grezza e la codifica, e fornisci l'IV se non è anteposto.

  3. 3

    Scegli la funzione di derivazione della chiave

    In modalità OpenSSL, scegli PBKDF2 (e il suo numero di iterazioni), EVP-SHA256 oppure EVP-MD5 per corrispondere a come è stata derivata la chiave. EVP-MD5 è quella usata da CryptoJS.

  4. 4

    Inserisci la passphrase o la chiave

    Digita la passphrase esatta, oppure incolla la chiave grezza esatta in hex o Base64. Il testo in chiaro appare a destra non appena tutto corrisponde.

  5. 5

    Leggi la diagnosi in caso di fallimento

    Se la decifratura genera un errore, il pannello indica la causa probabile — IV errato, chiave errata, errore di padding, contaminazione base64 o un KDF non corrispondente — così puoi regolare un'impostazione alla volta invece di procedere per tentativi.

Perché la Decifratura AES Fallisce — e Come Risolverla

Autenticazione GCM fallita

GCM si rifiuta di restituire testo in chiaro se il tag non viene verificato. La causa è una passphrase o chiave sbagliata, la modalità sbagliata, un IV sbagliato, oppure testo cifrato alterato o troncato — GCM non può dire quale. Ricontrolla ciascuno rispetto a come sono stati cifrati i dati.

✗ Errato
mode: CBC        // but the data was encrypted with GCM
=> Authentication failed
✓ Corretto
mode: GCM, same passphrase and key size as encryption
=> plaintext

CBC: un primo blocco illeggibile significa IV sbagliato

In CBC, l'IV influisce solo sul primo blocco di 16 byte. Se il blocco uno è illeggibile ma il resto si decodifica correttamente, il tuo IV è sbagliato; se tutto è illeggibile, la chiave è sbagliata.

✗ Errato
iv: 00000000000000000000000000000000   (wrong IV)
=> first block corrupt, rest readable
✓ Corretto
iv: (the exact IV used to encrypt)
=> Attack at dawn!

Errore di padding CBC / PKCS#7

Un errore di padding significa quasi sempre che la chiave è sbagliata; può anche significare che il testo cifrato è stato corrotto, troncato o non era stato riempito con PKCS#7. Conferma che l'intero testo cifrato sia stato copiato e che la passphrase e la KDF corrispondano.

✗ Errato
passphrase: hunter3   // one character off
=> padding error
✓ Corretto
passphrase: hunter2   // exact
=> plaintext

Contaminazione Base64 (o hex)

A capo, spazi o virgolette tipografiche incollati insieme al testo cifrato interrompono la decodifica. Lo strumento rimuove automaticamente gli spazi bianchi, ma caratteri mancanti o in eccesso continuano a far fallire il processo.

✗ Errato
“U2FsdGVkX1...”   (curly quotes and trailing junk copied in)
✓ Corretto
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=   (clean Base64)

U2FsdGVkX1 rilevato ma la modalità OpenSSL è disattivata

Se l'input inizia con U2FsdGVkX1, ti trovi davanti a un output Salted__ di OpenSSL/CryptoJS, che non si decifrerà come una normale stringa passphrase. Lo strumento mostra un banner; fai clic su Passa alla modalità OpenSSL e scegli la KDF.

✗ Errato
OpenSSL compatible: off
input: U2FsdGVkX1...
=> cannot parse
✓ Corretto
OpenSSL compatible: on, KDF chosen
=> plaintext

Mismatch della KDF (la trappola di CryptoJS)

Un testo cifrato che fallisce con PBKDF2 o SHA-256 ma si decifra con EVP-MD5 è stato prodotto da CryptoJS o openssl 1.0.2 e versioni precedenti. Da riga di comando, quelli richiedono -md md5.

✗ Errato
KDF: PBKDF2       // CryptoJS ciphertext
=> padding error
✓ Corretto
KDF: EVP-MD5      // matches CryptoJS
=> plaintext

Cosa Puoi Fare con la Decifratura AES

Decifra l'output di openssl enc
Leggi un blob Salted__ prodotto da openssl enc -aes-256-cbc senza passare da un terminale: incolla il Base64, inserisci la passphrase, scegli la KDF e ottieni il tuo testo in chiaro.
Decifra un testo cifrato CryptoJS
Recupera dati da un'app legacy che usava CryptoJS AES.encrypt(text, passphrase). Seleziona EVP-MD5 per corrispondere alla sua derivazione della chiave MD5 a passaggio singolo — il passo che quasi tutti si perdono.
Fai debug di una decifratura che continua a fallire
Quando il tuo stesso codice non riesce a decifrare qualcosa, incollalo qui per isolare se il problema è la chiave, l'IV, la modalità, la codifica o la KDF, usando il pannello diagnostico.
Verifica un ciclo completo di cifratura
Conferma che il testo cifrato dalla pagina di cifratura AES o dalla tua app si decifra tornando esattamente ai byte originali.
Comprendi un testo cifrato sconosciuto
Identifica un formato dalla sua forma — un prefisso U2FsdGVkX1, o un prefisso a lunghezza fissa che sembra un IV — e capisci come è stato prodotto prima di provare una chiave.

Meccanismi Interni e Formati della Decifratura AES

Decifratura GCM — autenticata
GCM ricalcola il tag a 128 bit sul testo cifrato e lo confronta prima di restituire qualunque testo in chiaro; una mancata corrispondenza genera un errore invece di far trapelare dati corrotti. Usa l'IV a 96 bit che era anteposto. Un fallimento GCM significa che la chiave, la modalità, l'IV o il testo cifrato sono sbagliati — il cifrario non può dirti quale, solo che l'autenticazione è fallita.
Decifratura CBC — osserva il primo blocco e il padding
CBC ha due firme di fallimento distinte. Se solo il primo blocco di 16 byte risulta illeggibile e il resto sembra corretto, l'IV era sbagliato. Se ogni blocco è illeggibile, la chiave è sbagliata. Un errore di padding PKCS#7 di solito significa che la chiave è sbagliata, oppure che il testo cifrato è stato corrotto o troncato. CBC non ha un tag (a differenza di una costruzione autenticata come un HMAC), quindi una chiave sbagliata può persino decifrare in byte dall'aspetto plausibile.
Decifratura CTR — silenziosa in caso di errore
CTR non genera mai un errore: una chiave sbagliata produce semplicemente dati illeggibili, che di solito emergono come errore 'UTF-8 non valido' una volta che i byte vengono decodificati in testo. Fai coincidere esattamente il contatore/IV. Poiché non c'è alcun controllo di integrità, tratta con sospetto qualunque output CTR che non hai autenticato separatamente.
Layout del testo cifrato (F1 / F2 / F3)
Il formato 1 (passphrase) è sale(16) poi IV poi testo cifrato, con il tag GCM di 16 byte accodato in modalità GCM. Il formato 2 (chiave grezza) è IV poi testo cifrato, oppure testo cifrato nudo con un IV fornito separatamente. Il formato 3 (OpenSSL) è l'intestazione ASCII Salted__ poi un sale di 8 byte poi il testo cifrato. Sapere quale layout hai indica allo strumento dove si trovano il sale e l'IV, e una chiave grezza dovrebbe provenire da un CSPRNG — consulta il generatore di chiavi segrete.
Derivazione della chiave: corrispondere a ciò che ha cifrato i dati
Per testo cifrato autosufficiente con passphrase, questo strumento usa PBKDF2-HMAC-SHA256 a 600.000 iterazioni. Per testo cifrato OpenSSL/CryptoJS devi selezionare la KDF usata: PBKDF2 (il valore predefinito di openssl -pbkdf2 è 10.000 iterazioni — imposta il tuo numero esatto), EVP_BytesToKey con SHA-256 (openssl 1.1+ senza -pbkdf2), oppure EVP_BytesToKey con MD5 e un singolo passaggio (CryptoJS e openssl 1.0.2 e versioni precedenti). Il classico bug 'non si decifra' è un testo cifrato CryptoJS o openssl datato provato con SHA-256 — passa a EVP-MD5 e funziona.

Best Practice per la Decifratura AES

Inizia identificando il formato
Prima di toccare le impostazioni, guarda il testo cifrato. Un prefisso U2FsdGVkX1 significa OpenSSL/CryptoJS; una stringa autosufficiente da questo strumento è formato passphrase; un blob nudo di solito richiede una chiave grezza e un IV separato.
Fai corrispondere esattamente la funzione di derivazione della chiave
Per testo cifrato OpenSSL/CryptoJS, la KDF è importante quanto la passphrase. Se PBKDF2 fallisce, prova EVP-MD5 (CryptoJS, openssl datato); anche il numero di iterazioni deve corrispondere, non solo l'algoritmo.
Incolla il testo cifrato senza contaminazioni
A capo o spazi estranei rimasti dalla copia possono corrompere il Base64. Questo strumento rimuove gli spazi bianchi, ma se la decodifica continua a fallire, controlla virgolette tipografiche, caratteri mancanti o una copia troncata. Il nostro strumento Base64 può aiutarti a ispezionare una stringa sospetta.
Tratta onestamente un risultato con chiave sbagliata
Con CTR o CBC, una chiave sbagliata può produrre byte invece di un errore. Se l'output sembra illeggibile o fallisce il controllo UTF-8, la chiave o l'IV sono sbagliati — non fidarti di un output che sembra parzialmente corretto.
Non inviare mai testo cifrato segreto o chiavi a un server
Il senso di decifrare nel browser è che nulla lascia la pagina. Evita strumenti che caricano dati; questo usa Web Crypto localmente, e puoi verificarlo con la scheda Rete o disconnettendoti. AES-256 è robusto — approvato da CNSA 2.0 per TOP SECRET — quindi se non riesci a decifrare, il problema sono i parametri, non il cifrario.

Domande Frequenti sulla Decifratura AES

Si può decifrare AES senza la chiave?
No — e diffida di chiunque affermi il contrario. AES non ha alcuna debolezza pratica nota, quindi senza la chiave o la passphrase l'unica opzione è la forza bruta, e i numeri la rendono senza speranza: AES-256 ha 2^256 chiavi possibili, uno spazio così vasto che anche a velocità di tentativo astronomiche servirebbe molto più tempo dell'età dell'universo per farne un'incisione minima. Non esiste un recupero tipo 'ho dimenticato la password' per AES, né alcun servizio legittimo che decifri per te testo cifrato AES arbitrario. Se hai perso la chiave, i dati sono persi; se ce l'hai, questo strumento decifrerà nel tuo browser. Quando la decifratura fallisce nonostante tu abbia la chiave, il colpevole è quasi sempre la modalità, l'IV o la funzione di derivazione della chiave sbagliati — non un cifrario violato.
Come decifro l'output di openssl enc?
Incolla il testo cifrato in Base64 (inizia con U2FsdGVkX1) e accetta il suggerimento dello strumento di passare alla modalità OpenSSL, oppure attiva manualmente la modalità compatibile con OpenSSL con Modalità CBC e Tipo di chiave Passphrase. Inserisci la passphrase, poi scegli la funzione di derivazione della chiave usata da openssl: PBKDF2 se il file è stato creato con -pbkdf2 (imposta lo stesso numero di iterazioni — il valore predefinito è 10.000), oppure EVP-SHA256 per un file OpenSSL 1.1+ semplice senza -pbkdf2. Lo strumento mostra il comando esatto openssl enc -d che riflette. Per esempio, echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A stampa Attack at dawn!.
Cosa significa U2FsdGVkX1 all'inizio di un testo cifrato?
È l'impronta del formato Salted__ di OpenSSL. OpenSSL e CryptoJS anteppongono gli 8 byte ASCII Salted__ seguiti da un sale di 8 byte al loro testo cifrato, e quando questo viene codificato in Base64 i byte iniziali risultano sempre U2FsdGVkX1. Vederlo ti dice due cose: i dati sono stati prodotti dal comando openssl enc o da una chiamata CryptoJS AES.encrypt(text, passphrase), e la chiave è stata derivata da una passphrase — quindi ti servirà la passphrase più la giusta funzione di derivazione della chiave, non una chiave grezza. Incollalo e questo strumento rileva il formato automaticamente offrendo di passare al flusso corrispondente.
Come decifro un testo cifrato CryptoJS?
AES.encrypt(text, passphrase) di CryptoJS usa il formato Salted__ di OpenSSL, ma con una chiave derivata dalla funzione legacy EVP_BytesToKey usando MD5 e una sola iterazione. Quindi incolla il testo cifrato, passa alla modalità OpenSSL e scegli la funzione di derivazione della chiave EVP-MD5 — questa è l'impostazione che quasi tutti si perdono, ed è il motivo per cui il testo cifrato CryptoJS sembra 'non decifrarsi' quando viene provato con PBKDF2 o SHA-256. Inserisci la stessa passphrase e il tuo testo in chiaro apparirà. Da riga di comando, la decifratura equivalente richiede -md md5.
GCM o CBC — perché il mio testo cifrato si decifra in un modo e non nell'altro?
La modalità deve corrispondere a come sono stati cifrati i dati; le due non sono intercambiabili. GCM include un tag di autenticazione a 128 bit e si rifiuterà di decifrare (errore di autenticazione) se scegli la modalità, la chiave o l'IV sbagliati. CBC non ha un tag, quindi sceglierlo per errore può produrre silenziosamente dati illeggibili o un errore di padding invece di un fallimento chiaro. Se l'autenticazione GCM continua a fallire, conferma che i dati siano davvero GCM; se CBC dà errori di padding, ricontrolla la passphrase e la funzione di derivazione della chiave. Il pannello diagnostico di questo strumento ti indica la causa più probabile invece di un errore generico.
Il mio testo cifrato o la mia chiave vengono caricati quando decifro qui?
No. La decifratura avviene interamente nel tuo browser tramite la Web Crypto API (crypto.subtle) — lo stesso motore verificato che il tuo browser usa per HTTPS. Il tuo testo cifrato, la passphrase e la chiave non vengono mai inviati da nessuna parte; puoi osservare che la scheda Rete resta vuota, oppure disconnetterti da internet e decifrare offline. Questo design esclusivamente locale è ciò che rende ragionevole incollare qui testo cifrato sensibile, anche se dovresti comunque evitare di gestire segreti di produzione in qualsiasi strumento online.
Qual è la differenza tra una passphrase e una chiave grezza quando si decifra?
Determina come inserisci il segreto. Se i dati sono stati cifrati a partire da una passphrase (incluso qualunque cosa nel formato U2FsdGVkX1), scegli Passphrase e lascia che lo strumento derivi la chiave con la KDF e il sale corrispondenti. Se sono stati cifrati con una chiave esatta a 128/192/256 bit, scegli Chiave grezza e incolla quei byte in hex o Base64 — e potresti anche dover fornire l'IV, anteposto al testo cifrato oppure inserito separatamente. Provare a decifrare dati con passphrase usando una chiave grezza, o viceversa, è una ragione comune per cui la decifratura fallisce. Per creare testo cifrato in entrambe le forme, usa lo strumento di cifratura AES.

Strumenti correlati

Vedi tutti gli strumenti →