Skip to content

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.

Sem rastreamento Roda no navegador Grátis
Tudo roda no seu navegador — sua chave e seus dados nunca saem desta página.
Recomendado
Tamanho da chave
Tipo de chave
Opções avançadas
Texto simples
Precisa da página dedicada de criptografia?
Revisado quanto à precisão criptográfica em relação à FIPS 197, à NIST SP 800-38D, à OWASP e à especificação W3C Web Crypto — Equipe de Ferramentas de Segurança da Go Tools · Jul 16, 2026

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

✗ Incorreto
mode: CBC        // but the data was encrypted with GCM
=> Authentication failed
✓ Correto
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.

✗ Incorreto
iv: 00000000000000000000000000000000   (wrong IV)
=> first block corrupt, rest readable
✓ Correto
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.

✗ Incorreto
passphrase: hunter3   // one character off
=> padding error
✓ Correto
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.

✗ Incorreto
“U2FsdGVkX1...”   (curly quotes and trailing junk copied in)
✓ Correto
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.

✗ Incorreto
OpenSSL compatible: off
input: U2FsdGVkX1...
=> cannot parse
✓ Correto
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.

✗ Incorreto
KDF: PBKDF2       // CryptoJS ciphertext
=> padding error
✓ Correto
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?
Não — e desconfie de quem disser o contrário. O AES não tem fraqueza prática conhecida, então sem a chave ou a frase-senha a única opção é a força bruta, e os números tornam isso sem esperança: o AES-256 tem 2^256 chaves possíveis, um espaço tão grande que mesmo tentativas astronomicamente rápidas levariam muito mais tempo do que a idade do universo para fazer mossa. Não existe recuperação de 'esqueci minha senha' para o AES, nem serviço legítimo que descriptografe texto cifrado AES arbitrário para você. Se você perdeu a chave, os dados se foram; se você a tem, esta ferramenta descriptografa no seu navegador. Quando a descriptografia falha apesar de você ter a chave, o culpado quase sempre é o modo, o IV ou a função de derivação de chave errados — não uma cifra quebrada.
Como eu descriptografo a saída do openssl enc?
Cole o texto cifrado em Base64 (ele começa com U2FsdGVkX1) e aceite a sugestão da ferramenta para mudar para o modo OpenSSL, ou ative manualmente o modo compatível com OpenSSL com Modo CBC e Tipo de chave Frase-senha. Digite a frase-senha, depois escolha a função de derivação de chave que o openssl usou: PBKDF2 se o arquivo foi feito com -pbkdf2 (defina a mesma contagem de iterações — o padrão é 10.000), ou EVP-SHA256 para um arquivo OpenSSL 1.1+ simples sem -pbkdf2. A ferramenta mostra o comando exato openssl enc -d que ela espelha. Por exemplo, echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A imprime Attack at dawn!.
O que significa U2FsdGVkX1 no início de um texto cifrado?
É a impressão digital do formato Salted__ do OpenSSL. O OpenSSL e o CryptoJS prefixam os 8 bytes ASCII Salted__ seguidos de um sal de 8 bytes ao texto cifrado, e quando isso é codificado em Base64, os bytes iniciais sempre saem como U2FsdGVkX1. Ver isso te diz duas coisas: os dados foram produzidos pelo comando enc do OpenSSL ou por uma chamada AES.encrypt(text, passphrase) do CryptoJS, e a chave foi derivada de uma frase-senha — então você vai precisar da frase-senha mais a função de derivação de chave certa, não de uma chave bruta. Cole-o aqui e esta ferramenta detecta o formato automaticamente e oferece mudar você para o fluxo correspondente.
Como eu descriptografo texto cifrado do CryptoJS?
O AES.encrypt(text, passphrase) do CryptoJS usa o formato Salted__ do OpenSSL, mas com uma chave derivada pela função legada EVP_BytesToKey usando MD5 e apenas uma iteração. Então cole o texto cifrado, mude para o modo OpenSSL e escolha a função de derivação de chave EVP-MD5 — essa é a configuração que quase todo mundo esquece, e é por isso que o texto cifrado do CryptoJS parece 'não descriptografar' quando testado com PBKDF2 ou SHA-256. Digite a mesma frase-senha e seu texto simples aparece. Na linha de comando, a descriptografia equivalente precisa de -md md5.
GCM vs CBC — por que meu texto cifrado descriptografa de um jeito e não do outro?
O modo precisa corresponder a como os dados foram criptografados; os dois não são intercambiáveis. O GCM inclui uma tag de autenticação de 128 bits e vai se recusar a descriptografar (falha de autenticação) se você escolher o modo, a chave ou o IV errados. O CBC não tem tag, então escolhê-lo errado pode produzir silenciosamente dados sem sentido ou um erro de padding em vez de uma falha clara. Se a autenticação GCM continuar falhando, confirme que os dados realmente são GCM; se o CBC der erros de padding, reconfira a frase-senha e a função de derivação de chave. O painel de diagnóstico desta ferramenta aponta a causa mais provável em vez de um erro genérico.
Meu texto cifrado ou minha chave são enviados quando eu descriptografo aqui?
Não. A descriptografia roda inteiramente no seu navegador por meio da Web Crypto API (crypto.subtle) — o mesmo motor auditado que seu navegador usa para HTTPS. Seu texto cifrado, sua frase-senha e sua chave nunca são enviados a lugar nenhum; você pode observar a aba Rede permanecer vazia, ou desconectar da internet e descriptografar offline. Esse design somente local é o que torna razoável colar texto cifrado sensível aqui, embora você ainda deva evitar lidar com segredos de produção em qualquer ferramenta online.
Qual é a diferença entre uma frase-senha e uma chave bruta ao descriptografar?
Isso decide como você insere o segredo. Se os dados foram criptografados a partir de uma frase-senha (incluindo qualquer coisa no formato U2FsdGVkX1), escolha Frase-senha e deixe a ferramenta derivar a chave com o KDF e o sal correspondentes. Se foram criptografados com uma chave exata de 128/192/256 bits, escolha Chave bruta e cole esses bytes em hex ou Base64 — e você também pode precisar fornecer o IV, prefixado ao texto cifrado ou inserido separadamente. Tentar descriptografar dados de frase-senha com uma chave bruta, ou vice-versa, é um motivo comum de falha na descriptografia. Para criar texto cifrado em qualquer um dos formatos, use a ferramenta de criptografia AES.

Ferramentas relacionadas

Ver todas as ferramentas →