Ferramenta de Descriptografia AES — OpenSSL e CryptoJS
Descriptografe AES online — GCM/CBC/CTR, frase-senha ou chave bruta, detecta automaticamente o formato "U2FsdGVkX1" do OpenSSL e CryptoJS. 100% no navegador, as chaves nunca saem da página.
Opções avançadas
Nunca reutilize um IV com a mesma chave. Deixe em branco para gerar um IV aleatório seguro.
Como Funciona a Descriptografia AES
A descriptografia AES é o inverso exato da criptografia: a mesma chave simétrica que embaralhou os dados executa as rodadas da cifra ao contrário para recuperar os bytes originais. Como o AES é simétrico, não existe uma 'chave de descriptografia' separada — você precisa fornecer a chave ou frase-senha, o modo e o IV idênticos aos usados para criptografar. Acerte os parâmetros e o texto simples volta byte a byte; erre um deles e você recebe um erro ou dados sem sentido.
Para descriptografar corretamente, quatro coisas precisam corresponder exatamente à criptografia: a chave (ou a frase-senha mais suas configurações de derivação de chave), o modo de operação (GCM, CBC ou CTR), o IV ou nonce e — no caso do GCM — a tag de autenticação. Erre qualquer um deles e o resultado é um erro definitivo (uma falha de autenticação GCM, uma falha de padding no CBC) ou dados sem sentido silenciosos (CTR, ou CBC com o IV errado). Esta ferramenta lê o sal, o IV e a tag do texto cifrado para você quando estão empacotados, e diagnostica a falha quando algo não bate.
O texto cifrado chega em algumas formas diferentes, e esta ferramenta entende três. O Formato 1 é nosso layout autocontido de frase-senha: um sal de 16 bytes, depois o IV, depois o texto cifrado (com a tag GCM anexada no modo GCM) — descriptografe-o apenas com a frase-senha. O Formato 2 é o layout de chave bruta: o IV prefixado ao texto cifrado, ou texto cifrado 'puro', onde você fornece o IV separadamente. O Formato 3 é o layout do OpenSSL, produzido pelo comando enc do OpenSSL e pelo CryptoJS.
Vale a pena reconhecer esse formato do OpenSSL de vista. Ele começa com os 8 bytes ASCII Salted__, seguidos de um sal de 8 bytes e depois o texto cifrado, e quando tudo isso é codificado em Base64 esses primeiros bytes sempre aparecem como o prefixo U2FsdGVkX1. Então, se um texto cifrado que te entregaram começa com U2FsdGVkX1, ele quase certamente foi produzido pelo openssl enc ou por uma chamada AES.encrypt(text, passphrase) do CryptoJS. O CryptoJS deriva sua chave com a função legada EVP_BytesToKey usando uma única passagem MD5, enquanto o openssl moderno usa PBKDF2 — motivo pelo qual escolher a função de derivação de chave certa é todo o jogo ao descriptografar esses casos. Se sua entrada é Base64 e você só quer ver os bytes brutos, nosso decodificador Base64 vai mostrá-los. Para criar texto cifrado nesses formatos, use a ferramenta de criptografia 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
} Recursos Principais
Detecta automaticamente saída do OpenSSL e CryptoJS
Cole um texto cifrado começando com U2FsdGVkX1 e a ferramenta reconhece o formato Salted__ e oferece uma troca de um clique para o fluxo de descriptografia correspondente, então você nunca luta contra um erro sem saída.
Três funções de derivação de chave
Descriptografe qualquer geração do formato openssl enc: PBKDF2 com uma contagem de iterações personalizada, EVP_BytesToKey com SHA-256, ou a passagem única legada de MD5 que o CryptoJS usa.
Explica por que a descriptografia falhou
Em vez de um erro genérico, você recebe um diagnóstico: chave errada versus IV errado, uma falha de autenticação GCM, um erro de padding no CBC, poluição de base64, ou 'isso parece um texto cifrado da era MD5, tente EVP-MD5'.
Comando openssl equivalente mostrado ao vivo
Veja o comando exato openssl enc -d que reproduz a descriptografia na linha de comando, com a contagem de iterações e tudo, para você verificar o resultado fora do navegador.
Frase-senha ou chave bruta, GCM/CBC/CTR
Lida com texto cifrado autocontido por frase-senha, texto cifrado de chave bruta com IV prefixado ou fornecido separadamente, e os três modos da Web Crypto.
100% no seu navegador
O texto cifrado e as chaves são processados localmente com a Web Crypto API e nunca são enviados — você pode verificar com a aba Rede ou ficando offline.
Exemplos de Descriptografia AES
Descriptografar um texto cifrado autocontido por frase-senha (GCM)
sal(16) ‖ iv(12) ‖ texto cifrado ‖ tag(16), Base64 — da página de criptografia
The quick brown fox jumps over the lazy dog.
Este é o inverso do exemplo GCM da página de criptografia. Pegue a string Base64 autocontida que ela produziu para a frase-senha hunter2, cole-a aqui com Modo GCM, Tamanho de chave 256, Tipo de chave Frase-senha e a mesma frase-senha hunter2, e a frase original volta. Você não digita um sal ou IV separadamente — a ferramenta lê o sal de 16 bytes e o IV de 12 bytes do início da string, deriva a chave com PBKDF2-HMAC-SHA256 (600.000 iterações) e verifica a tag GCM de 128 bits anexada antes de devolver qualquer texto. Clique em Carregar exemplo na página de criptografia para gerar uma string nova, depois descriptografe-a aqui.
Descriptografar uma saída real do OpenSSL / PBKDF2
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Attack at dawn!
Esta é uma saída genuína do openssl enc. Cole-a, mude para o modo OpenSSL (Modo CBC, Tipo de chave Frase-senha), digite a frase-senha correct-horse, escolha a função de derivação de chave PBKDF2 e defina as iterações para 10.000 — o texto simples é Attack at dawn!. O prefixo U2FsdGVkX1 disse à ferramenta que este era o formato Salted__, e o sal de 8 bytes fica logo após esse cabeçalho dentro do Base64. Você pode reproduzir a descriptografia exata na linha de comando: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A. Se um texto cifrado semelhante falhar com PBKDF2, ele provavelmente foi feito pelo CryptoJS — mude o KDF para EVP-MD5 e tente de novo. Clique em Carregar exemplo OpenSSL para preencher esses valores automaticamente.
Como Descriptografar Texto Cifrado AES
- 1
Cole o texto cifrado
Solte seu texto cifrado em Base64 ou Hex no campo de entrada. Se começar com U2FsdGVkX1, a ferramenta o sinaliza como formato OpenSSL/CryptoJS e oferece mudar você para o modo certo.
- 2
Defina o formato e o modo
Para uma string autocontida desta ferramenta, mantenha o modo Frase-senha e o GCM/CBC/CTR correspondente. Para saída do OpenSSL/CryptoJS, aceite a troca (CBC + frase-senha). Para dados de chave bruta, escolha Chave bruta e a codificação, e forneça o IV se ele não estiver prefixado.
- 3
Escolha a função de derivação de chave
No modo OpenSSL, escolha PBKDF2 (e sua contagem de iterações), EVP-SHA256 ou EVP-MD5 para corresponder a como a chave foi derivada. EVP-MD5 é a que o CryptoJS usa.
- 4
Digite a frase-senha ou a chave
Digite a frase-senha exata, ou cole a chave bruta exata em hex ou Base64. O texto simples aparece à direita assim que tudo corresponder.
- 5
Leia o diagnóstico se falhar
Se a descriptografia der erro, o painel aponta a causa provável — IV errado, chave errada, erro de padding, poluição de base64 ou incompatibilidade de KDF — para que você ajuste uma configuração de cada vez em vez de adivinhar.
Por Que a Descriptografia AES Falha — e Como Corrigir
Falha na autenticação GCM
O GCM se recusa a devolver o texto simples se a tag não for verificada. A causa é uma frase-senha ou chave erradas, o modo errado, um IV errado, ou texto cifrado alterado/truncado — o GCM não consegue dizer qual. Reconfira cada um contra como os dados foram criptografados.
mode: CBC // but the data was encrypted with GCM => Authentication failed
mode: GCM, same passphrase and key size as encryption => plaintext
CBC: um primeiro bloco corrompido significa o IV errado
No CBC, o IV afeta apenas o primeiro bloco de 16 bytes. Se o bloco um estiver com dados sem sentido, mas o resto decodificar de forma limpa, seu IV está errado; se tudo estiver com dados sem sentido, a chave está errada.
iv: 00000000000000000000000000000000 (wrong IV) => first block corrupt, rest readable
iv: (the exact IV used to encrypt) => Attack at dawn!
CBC / erro de padding PKCS#7
Um erro de padding quase sempre significa que a chave está errada; também pode significar que o texto cifrado foi corrompido, truncado, ou não teve padding PKCS#7. Confirme que o texto cifrado completo foi copiado e que a frase-senha e o KDF correspondem.
passphrase: hunter3 // one character off => padding error
passphrase: hunter2 // exact => plaintext
Poluição de Base64 (ou hex)
Quebras de linha, espaços ou aspas curvas colados junto com o texto cifrado quebram a decodificação. A ferramenta remove espaços em branco automaticamente, mas caracteres faltando ou extras ainda falham.
“U2FsdGVkX1...” (curly quotes and trailing junk copied in)
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ= (clean Base64)
U2FsdGVkX1 detectado, mas o modo OpenSSL está desativado
Se a entrada começar com U2FsdGVkX1, você está olhando para uma saída Salted__ do OpenSSL/CryptoJS, que não vai descriptografar como uma string normal de frase-senha. A ferramenta mostra um banner; clique em Mudar para o modo OpenSSL e escolha o KDF.
OpenSSL compatible: off input: U2FsdGVkX1... => cannot parse
OpenSSL compatible: on, KDF chosen => plaintext
Incompatibilidade de KDF (a armadilha do CryptoJS)
Um texto cifrado que falha com PBKDF2 ou SHA-256, mas descriptografa com EVP-MD5, foi produzido pelo CryptoJS ou por openssl 1.0.2 e anteriores. Na linha de comando, esses casos precisam de -md md5.
KDF: PBKDF2 // CryptoJS ciphertext => padding error
KDF: EVP-MD5 // matches CryptoJS => plaintext
O Que Você Pode Fazer com Descriptografia AES
- Descriptografe a saída do openssl enc
- Leia um blob Salted__ produzido por openssl enc -aes-256-cbc sem precisar abrir um terminal: cole o Base64, digite a frase-senha, escolha o KDF e obtenha seu texto simples.
- Descriptografe texto cifrado do CryptoJS
- Recupere dados de um aplicativo legado que usava CryptoJS AES.encrypt(text, passphrase). Selecione EVP-MD5 para corresponder à sua derivação de chave MD5 de passagem única — o passo que quase todo mundo esquece.
- Depure uma descriptografia que continua falhando
- Quando seu próprio código não consegue descriptografar algo, cole-o aqui para isolar se o problema é a chave, o IV, o modo, a codificação ou o KDF, usando o painel de diagnóstico.
- Verifique um ciclo completo de criptografia
- Confirme que o texto cifrado da página de criptografia AES ou do seu aplicativo descriptografa de volta para os bytes originais exatos.
- Entenda um texto cifrado desconhecido
- Identifique um formato pela sua forma — um prefixo U2FsdGVkX1, ou um prefixo de comprimento fixo que parece um IV — e descubra como foi produzido antes de tentar uma chave.
Internos e Formatos da Descriptografia AES
- Descriptografia GCM — autenticada
- O GCM recalcula a tag de 128 bits sobre o texto cifrado e a compara antes de devolver qualquer texto simples; uma incompatibilidade gera uma exceção em vez de vazar dados corrompidos. Ele usa o IV de 96 bits que foi prefixado. Uma falha no GCM significa que a chave, o modo, o IV ou o texto cifrado estão errados — a cifra não consegue dizer qual, apenas que a autenticação falhou.
- Descriptografia CBC — observe o primeiro bloco e o padding
- O CBC tem duas assinaturas de falha distintas. Se apenas o primeiro bloco de 16 bytes estiver corrompido e o resto parecer correto, o IV estava errado. Se todos os blocos forem dados sem sentido, a chave está errada. Um erro de padding PKCS#7 geralmente significa que a chave está errada, ou que o texto cifrado foi corrompido ou truncado. O CBC não tem tag (diferente de uma construção autenticada como um HMAC), então uma chave errada pode até descriptografar para bytes com aparência plausível.
- Descriptografia CTR — silenciosa em caso de erro
- O CTR nunca gera exceção: uma chave errada simplesmente produz dados sem sentido, que geralmente aparecem como um erro de 'UTF-8 inválido' quando os bytes são decodificados para texto. Faça o contador/IV corresponder exatamente. Como não há verificação de integridade, trate com suspeita qualquer saída CTR que você não autenticou separadamente.
- Layouts de texto cifrado (F1 / F2 / F3)
- O Formato 1 (frase-senha) é sal(16), depois IV, depois texto cifrado, com a tag GCM de 16 bytes anexada no modo GCM. O Formato 2 (chave bruta) é IV, depois texto cifrado, ou texto cifrado puro com um IV fornecido separadamente. O Formato 3 (OpenSSL) é o cabeçalho ASCII Salted__, depois um sal de 8 bytes, depois o texto cifrado. Saber qual layout você tem diz à ferramenta onde ficam o sal e o IV, e uma chave bruta em si deve vir de um CSPRNG — veja o gerador de chave secreta.
- Derivação de chave: correspondendo ao que criptografou os dados
- Para texto cifrado autocontido por frase-senha, esta ferramenta usa PBKDF2-HMAC-SHA256 em 600.000 iterações. Para texto cifrado do OpenSSL/CryptoJS, você precisa selecionar o KDF que foi usado: PBKDF2 (o padrão de openssl -pbkdf2 é 10.000 iterações — defina sua contagem exata), EVP_BytesToKey com SHA-256 (openssl 1.1+ sem -pbkdf2), ou EVP_BytesToKey com MD5 e uma única passagem (CryptoJS e openssl 1.0.2 e anteriores). O bug clássico de 'não descriptografa' é um texto cifrado do CryptoJS ou de um openssl antigo testado com SHA-256 — mude para EVP-MD5 e funciona.
Boas Práticas de Descriptografia AES
- Comece identificando o formato
- Antes de mexer em configurações, olhe para o texto cifrado. Um prefixo U2FsdGVkX1 significa OpenSSL/CryptoJS; uma string autocontida desta ferramenta é o formato frase-senha; um blob puro geralmente precisa de uma chave bruta e um IV separado.
- Corresponda exatamente à função de derivação de chave
- Para texto cifrado do OpenSSL/CryptoJS, o KDF é tão importante quanto a frase-senha. Se PBKDF2 falhar, tente EVP-MD5 (CryptoJS, openssl antigo); a contagem de iterações também precisa corresponder, não apenas o algoritmo.
- Cole o texto cifrado de forma limpa
- Quebras de linha ou espaços perdidos ao copiar podem corromper o Base64. Esta ferramenta remove espaços em branco, mas se a decodificação ainda falhar, verifique aspas curvas, caracteres faltando ou uma cópia truncada. Nossa ferramenta Base64 pode ajudar a inspecionar uma string suspeita.
- Trate um resultado de chave errada com honestidade
- Com CTR ou CBC, uma chave errada pode produzir bytes em vez de um erro. Se a saída parecer dados sem sentido ou falhar na verificação de UTF-8, a chave ou o IV estão errados — não confie em uma saída com aparência parcialmente correta.
- Nunca envie texto cifrado secreto ou chaves para um servidor
- O objetivo de descriptografar no navegador é que nada saia da página. Evite ferramentas que fazem upload; esta usa a Web Crypto localmente, e você pode verificar com a aba Rede ou ficando offline. O AES-256 é forte — aprovado pelo CNSA 2.0 para TOP SECRET — então, se você não conseguir descriptografar, o problema são os parâmetros, não a cifra.
Perguntas Frequentes sobre Descriptografia AES
É possível descriptografar AES sem a chave?
Como eu descriptografo a saída do openssl enc?
O que significa U2FsdGVkX1 no início de um texto cifrado?
Como eu descriptografo texto cifrado do CryptoJS?
GCM vs CBC — por que meu texto cifrado descriptografa de um jeito e não do outro?
Meu texto cifrado ou minha chave são enviados quando eu descriptografo aqui?
Qual é a diferença entre uma frase-senha e uma chave bruta ao descriptografar?
Ferramentas relacionadas
Ver todas as ferramentas →Ferramenta de Criptografia AES — GCM, CBC e CTR
Ferramentas de Segurança
Criptografia AES online e gratuita — AES-128/192/256, GCM/CBC/CTR, frase-senha (PBKDF2) ou chave bruta. Roda 100% no navegador; nada é enviado a um servidor.
Gerador e Verificador de Hash Bcrypt
Ferramentas de Segurança
Gere e verifique hashes bcrypt de senha online — custo ajustável, prefixos $2b$/$2a$/$2y$. 100% no seu navegador; sua senha nunca é enviada.
Gerador de HMAC e Verificador de Assinatura
Ferramentas de Segurança
Gerador e verificador de HMAC online e gratuito. Calcule HMAC-SHA256/SHA1/SHA384/SHA512 com chaves em Texto, Hex ou Base64 e saída Hex/Base64/Base64URL. 100% no seu navegador — as chaves nunca saem da página.
Decodificador JWT
Ferramentas de Segurança
Decodifique tokens JWT online com nosso decodificador JWT grátis. Inspecione cabeçalho, carga útil, assinatura, expiração e reivindicações. 100% navegador — seu token nunca sai do dispositivo. Sem cadastro, sem rastreio.
Codificador e Gerador JWT
Ferramentas de Segurança
Gerador e codificador JWT online grátis. Monte o cabeçalho e a carga útil, assine com HS256, RS256 ou ES256 instantaneamente. 100% no navegador — seu segredo e sua chave nunca saem do dispositivo.
Gerador de Segredo JWT — HS256/384/512
Ferramentas de Segurança
Gere um segredo JWT forte e correto pela RFC para HS256/384/512 — 100% no navegador, nunca enviado a um servidor. base64url, base64 ou hex; copie para o .env.