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.
Opzioni avanzate
Non riutilizzare mai un IV con la stessa chiave. Lascia vuoto per generare un IV casuale sicuro.
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
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
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
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
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
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.
mode: CBC // but the data was encrypted with GCM => Authentication failed
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.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
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.
passphrase: hunter3 // one character off => padding error
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.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
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.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
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.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
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?
Come decifro l'output di openssl enc?
Cosa significa U2FsdGVkX1 all'inizio di un testo cifrato?
Come decifro un testo cifrato CryptoJS?
GCM o CBC — perché il mio testo cifrato si decifra in un modo e non nell'altro?
Il mio testo cifrato o la mia chiave vengono caricati quando decifro qui?
Qual è la differenza tra una passphrase e una chiave grezza quando si decifra?
Strumenti correlati
Vedi tutti gli strumenti →Strumento di Crittografia AES — GCM, CBC e CTR
Strumenti di sicurezza
Crittografia AES online gratuita — AES-128/192/256, GCM/CBC/CTR, passphrase (PBKDF2) o chiave grezza. Funziona al 100% nel browser; nulla viene caricato.
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.