Skip to content

Ferramenta de Criptografia AES — GCM, CBC e CTR

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.

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 cifrado
Precisa da página dedicada de descriptografia?
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

O Que É Criptografia AES?

O AES (Advanced Encryption Standard, ou Padrão de Criptografia Avançado) é uma cifra de bloco simétrica padronizada pelo NIST na FIPS 197 em 2001, baseada no design Rijndael de Joan Daemen e Vincent Rijmen. Ele criptografa dados em blocos fixos de 128 bits usando uma chave de 128, 192 ou 256 bits, e a mesma chave tanto criptografa quanto descriptografa. É o carro-chefe da criptografia moderna, protegendo desde o tráfego HTTPS até a criptografia de disco.

Uma cifra de bloco pura só embaralha um único bloco de 16 bytes, então o AES sempre roda dentro de um modo de operação que encadeia os blocos. Esta ferramenta oferece três, todos fornecidos nativamente pela Web Crypto API do navegador: GCM, CBC e CTR. O GCM (Galois/Counter Mode, NIST SP 800-38D) é o padrão recomendado porque é autenticado — ele produz uma tag de autenticação de 128 bits junto com o texto cifrado, então qualquer adulteração é detectada quando você descriptografa. CBC e CTR oferecem apenas confidencialidade; sozinhos, eles não conseguem dizer se o texto cifrado foi alterado, motivo pelo qual o TLS 1.3 (RFC 8446) abandonou todas as suítes de cifra CBC em favor de modos autenticados como o GCM.

Você vai notar que não há modo ECB aqui, e isso é deliberado. O ECB criptografa todo bloco de texto simples idêntico para o mesmo bloco de texto cifrado, então estruturas em larga escala vazam diretamente — a famosa imagem do 'pinguim ECB' continua visivelmente um pinguim depois de criptografada. A Web Crypto API omite o ECB exatamente por esse motivo (ela implementa apenas AES-CBC, AES-CTR e AES-GCM), e nós também. Se você precisa interoperar com um sistema legado que usava ECB, trate isso como um motivo para migrá-lo, não para reproduzir a fraqueza.

Como a maioria das pessoas digita uma frase-senha em vez de uma chave aleatória de 32 bytes, a ferramenta deriva a chave AES a partir da sua frase-senha com PBKDF2-HMAC-SHA256 em 600.000 iterações e um sal aleatório de 16 bytes, seguindo a orientação atual da OWASP para armazenamento de senhas (e a NIST SP 800-132, que exige um sal de pelo menos 128 bits). Isso torna lenta a força bruta contra uma frase-senha fraca, mas não é mágica: esta é uma ferramenta para aprender modos, depurar texto cifrado e dados pessoais avulsos — não para proteger segredos de produção, que pertencem a um sistema dedicado de gestão de chaves. Para uma frase-senha forte, gere uma com nosso gerador de senhas aleatórias; para uma chave aleatória de verdade, use o gerador de chave secreta.

// 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
}

Recursos Principais

Criptografia autenticada GCM por padrão

O GCM produz o texto cifrado mais uma tag de autenticação de 128 bits, então a descriptografia falha ruidosamente se um único byte foi alterado. CBC e CTR estão a um clique de distância para quando você precisar interoperar com eles.

Texto cifrado autocontido

O modo Frase-senha empacota o sal aleatório, o IV e a tag em uma única string Base64, então quem descriptografar precisa apenas da frase-senha — não há campos separados para copiar ou perder.

Frase-senha ou chave bruta

Digite uma frase-senha (esticada com PBKDF2-HMAC-SHA256, 600.000 iterações) ou cole uma chave exata de 128/192/256 bits em hex ou Base64, com um selo de contagem de bytes ao vivo que confirma o comprimento.

Saída compatível com OpenSSL

Ative o modo OpenSSL para emitir o formato Salted__ que o comando enc do OpenSSL e o CryptoJS leem, com o comando de CLI equivalente mostrado ao vivo para você reproduzir em um terminal.

100% no seu navegador

Cada byte é criptografado localmente com a Web Crypto API. Abra sua aba Rede e você verá nada sair da página — funciona até offline.

Saída em Base64 ou Hex

Copie o resultado na codificação que o sistema de destino esperar, e inspecione os comprimentos do sal, do IV, do texto cifrado e da tag na faixa de detalhamento de segmentos.

Exemplos de Criptografia AES

GCM + frase-senha (autocontido, não determinístico)

The quick brown fox jumps over the lazy dog.
sal (16 B) + IV (12 B) + texto cifrado + tag (16 B), codificado em Base64 — um valor novo a cada execução

Com Modo GCM, Tamanho de chave 256, Tipo de chave Frase-senha e a frase-senha hunter2, esta frase é criptografada em uma única string Base64 autocontida. Criptografe-a duas vezes e você obterá duas saídas completamente diferentes — isso é intencional. O modo Frase-senha gera um sal novo de 16 bytes e um IV novo de 12 bytes a cada criptografia, então um texto simples idêntico nunca produz o mesmo texto cifrado, e um observador não consegue saber que duas mensagens são iguais. A faixa de segmentos abaixo da saída mostra o layout exato: sal, depois IV, depois o texto cifrado com sua tag GCM de 128 bits anexada. Para descriptografar, o destinatário precisa apenas da frase-senha e do mesmo modo e tamanho de chave — o sal, o IV e a tag viajam todos dentro da string.

Saída compatível com OpenSSL (CBC + frase-senha)

Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=

Ative o modo compatível com OpenSSL com Modo CBC, Tipo de chave Frase-senha, a frase-senha correct-horse, KDF PBKDF2 e 10.000 iterações. A ferramenta então emite o formato Salted__ do OpenSSL: Base64 que sempre começa com U2FsdGVkX1, que é a codificação Base64 do cabeçalho Salted__ de 8 bytes. Como um novo sal aleatório de 8 bytes é gerado a cada vez, a string exata muda a cada execução, mas todas descriptografam na linha de comando com: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — que imprime Attack at dawn!. Escolha EVP-MD5 em vez de PBKDF2 para corresponder ao CryptoJS ou ao OpenSSL 1.0.2 e anteriores. Observe que o openssl enc não tem suporte a GCM, então o modo OpenSSL é somente CBC.

Como Criptografar Texto com AES

  1. 1

    Escolha um modo e um tamanho de chave

    Deixe o Modo em GCM (recomendado) e o Tamanho de chave em 256 para o padrão mais forte e sensato. Mude para CBC ou CTR apenas se um sistema que você está mirando exigir isso.

  2. 2

    Escolha frase-senha ou chave bruta

    Mantenha o Tipo de chave em Frase-senha e digite uma frase-senha forte, ou mude para Chave bruta e cole uma chave exata de 128/192/256 bits em hex ou Base64. O selo de contagem de bytes confirma se sua chave bruta tem um comprimento válido.

  3. 3

    Digite o texto a criptografar

    Digite ou cole seu texto simples. A criptografia roda automaticamente enquanto você digita, inteiramente no seu navegador — sem ida e volta por botão e sem upload.

  4. 4

    Copie o texto cifrado autocontido

    O resultado em Base64 à direita já contém o sal, o IV e a tag de autenticação. Use a faixa de segmentos para ver o layout de bytes, depois clique em Copiar. Mude a codificação de saída para Hex se o sistema de destino esperar isso.

  5. 5

    Descriptografe de volta quando precisar

    Dê o texto cifrado, a frase-senha e o mesmo modo e tamanho de chave ao destinatário, ou abra a página de descriptografia AES para reverter você mesmo.

Erros Comuns de Criptografia AES

Confundir uma frase-senha com uma chave bruta

Uma chave bruta deve ter exatamente 16, 24 ou 32 bytes de dados aleatórios (inseridos como hex ou Base64); uma frase-senha é qualquer texto e precisa ser esticada por um KDF primeiro. Selecionar Chave bruta e colar uma frase-senha humana ou gera erro de comprimento ou produz uma chave fraca.

✗ Incorreto
Key type: Raw key
Key (hex): correct horse battery staple   (not hex, not 32 bytes)
✓ Correto
Key type: Passphrase
Passphrase: correct horse battery staple   (stretched with PBKDF2)

Reutilizar um IV com a mesma chave

O IV deve ser único por mensagem sob uma dada chave. Reutilizá-lo é fatal para o GCM (pode vazar a chave de autenticação) e quebra a confidencialidade para CBC e CTR. Deixe a ferramenta gerar um IV aleatório novo a cada vez.

✗ Incorreto
// same key, same IV for two messages
encrypt(key, iv, a); encrypt(key, iv, b);
✓ Correto
// fresh random IV each time (the default)
encrypt(key, randomIV(), a);

Perder o sal, o IV ou a tag

Se você copiar apenas os bytes do texto cifrado e descartar o sal/IV prefixados — ou a tag GCM anexada — os dados nunca poderão ser descriptografados. Mantenha a string autocontida inteira, não apenas o meio dela.

✗ Incorreto
stored = ciphertext              // salt + IV + tag thrown away
✓ Correto
stored = salt + iv + ciphertext + tag   // the full Base64 string

Esperar que a saída do GCM seja igual a cada execução

O GCM (e o modo frase-senha em geral) usa um sal e um IV aleatórios, então o mesmo texto criptografa para uma string Base64 diferente a cada vez. Isso é um recurso de segurança, não um bug — significa que um espião não consegue saber que dois textos cifrados criptografam a mesma mensagem.

✗ Incorreto
assert(encrypt(msg) === encrypt(msg))   // fails — and should
✓ Correto
assert(decrypt(encrypt(msg)) === msg)   // this is what must hold

O Que Você Pode Fazer com Criptografia AES

Aprenda como os modos do AES se comportam
Alterne entre GCM, CBC e CTR com a mesma entrada para ver como a autenticação, o comprimento do IV e o tamanho do texto cifrado mudam. Uma forma prática de entender o que a NIST SP 800-38D realmente especifica.
Produza texto cifrado que outro sistema consiga ler
Gere a saída no formato Salted__ do OpenSSL (ou como uma chave bruta mais IV) para que um backend, script ou colega de equipe usando openssl ou uma biblioteca de criptografia possa descriptografá-la sem atrito.
Criptografe uma nota curta ou trecho de texto
Proteja um pedaço avulso de texto pessoal — uma frase de recuperação que você está movendo entre dispositivos, um trecho em um chamado de suporte — com uma frase-senha que só você conhece. Não serve para segredos regulados ou de produção.
Prototipe um formato de criptografia
Acerte aqui o layout de sal/IV/tag e as configurações de KDF antes de escrever o código, usando o detalhamento de segmentos para confirmar a ordem e os comprimentos de bytes.
Gere vetores de teste
Crie um texto cifrado conhecido com uma frase-senha e um modo fixos para alimentar seus próprios testes de descriptografia, depois verifique o ciclo completo na página de descriptografia AES.

Modos AES e Derivação de Chave

GCM (Galois/Counter Mode) — autenticado, recomendado
Confidencialidade mais uma tag de autenticação de 128 bits (NIST SP 800-38D). Usa um IV de 96 bits (12 bytes), gerado aleatoriamente a cada criptografia, e tanto a criptografia quanto a descriptografia paralelizam bem. A única regra que você nunca deve quebrar: nunca reutilize um IV com a mesma chave. A SP 800-38D limita uma única chave a cerca de 2^32 IVs gerados aleatoriamente, e uma repetição vaza o XOR de dois textos simples e pode até expor a chave de autenticação que protege a tag. Ideal para quase tudo.
CBC (Cipher Block Chaining) — apenas confidencialidade
Cada bloco recebe XOR com o bloco de texto cifrado anterior, usando um IV aleatório de 16 bytes. Não tem autenticação embutida, então deve ser combinado com um MAC separado — encrypt-then-MAC, por exemplo com nosso gerador de HMAC — e é historicamente propenso a ataques de oráculo de padding (Vaudenay, EUROCRYPT 2002). Oferecido aqui para interoperabilidade com OpenSSL e sistemas mais antigos.
CTR (Counter) — apenas confidencialidade, tipo stream
Transforma o AES em uma cifra de fluxo criptografando um contador, então qualquer comprimento de bytes funciona sem padding e os blocos paralelizam livremente. Assim como o CBC, ele não oferece integridade por conta própria, e reutilizar o contador/IV sob uma mesma chave é catastrófico. Útil quando você precisa de acesso aleatório ou semântica de streaming.
ECB — não oferecido (por design)
O Electronic Codebook criptografa cada bloco de forma independente, então blocos de texto simples idênticos produzem texto cifrado idêntico e padrões vazam — o notório 'pinguim ECB'. A Web Crypto API deliberadamente não o implementa, e nós também não. Se um sistema legado exigir ECB, trate isso como um bug a corrigir, não como um formato a reproduzir.
Derivação de chave: 600.000 vs 10.000 vs 1 iteração
No modo padrão de frase-senha, esta ferramenta usa PBKDF2-HMAC-SHA256 em 600.000 iterações (o mesmo hash SHA-256 aplicado centenas de milhares de vezes) com um sal de 16 bytes, conforme a OWASP. No modo compatível com OpenSSL, o PBKDF2 usa por padrão apenas 10.000 iterações (o padrão do openssl enc), e o KDF legado EVP_BytesToKey usado pelo CryptoJS e por versões antigas do OpenSSL executa uma única passagem MD5 — ordens de magnitude mais fraco. Mais iterações significam uma força bruta mais lenta por tentativa, motivo pelo qual o padrão moderno é tão mais alto. Argon2 e scrypt são ainda mais fortes, mas não fazem parte da Web Crypto, então estão fora do escopo aqui; para armazenamento de senhas, siga a OWASP e prefira Argon2id.

Boas Práticas de Criptografia AES

Prefira GCM, a menos que um sistema parceiro exija o contrário
A criptografia autenticada detecta adulterações que o CBC e o CTR deixam passar silenciosamente. Só recorra a CBC ou CTR por interoperabilidade, e adicione um MAC se o fizer.
Use um IV aleatório novo para cada mensagem
A ferramenta faz isso automaticamente. Se você substituir o IV manualmente, nunca reutilize um com a mesma chave — para o GCM uma repetição é catastrófica, e para o CBC quebra a segurança semântica.
Escolha frases-senha fortes e chaves realmente aleatórias
O PBKDF2 desacelera a força bruta, mas não consegue salvar uma frase-senha fraca. Gere uma frase-senha longa com o gerador de senhas, ou uma chave verdadeiramente aleatória com o gerador de chave secreta.
Mantenha o sal, o IV e a tag junto com o texto cifrado
Eles não são secretos, mas a descriptografia falha sem eles. O formato autocontido desta ferramenta empacota os três; se você usar o modo de chave bruta com texto cifrado puro, copie o IV separadamente e armazene-o junto com o texto cifrado.
Não criptografe segredos de produção ou regulados em nenhuma ferramenta online
Mesmo sendo totalmente do lado do cliente, uma ferramenta de navegador serve para aprendizado, depuração e casos pessoais avulsos. Segredos reais pertencem a um sistema de gestão de chaves auditado, com manuseio e rotação de chaves verificados. O próprio AES-256 é forte — aprovado sob o conjunto CNSA 2.0 da NSA para informações até TOP SECRET — e quebras no mundo real vêm de erros de implementação, não da cifra.

Perguntas Frequentes sobre Criptografia AES

É seguro criptografar texto online?
Com esta ferramenta, a criptografia em si acontece inteiramente no seu navegador — seu texto, sua frase-senha e sua chave nunca trafegam até um servidor, o que você pode confirmar observando a aba Rede. Isso a torna segura para aprendizado, depuração e dados pessoais avulsos. Não é o lugar certo para segredos de produção, dados regulados ou qualquer coisa sob gestão de chaves de longo prazo, e isso vale para qualquer ferramenta online: uma página de navegador não pode oferecer armazenamento de chaves auditado, rotação ou controle de acesso. Criptografe coisas descartáveis e pessoais aqui, e mantenha segredos reais em um sistema dedicado.
O AES pode ser descriptografado sem a chave?
Não. O AES não tem quebra prática conhecida, então sem a chave ou a frase-senha não há atalho — um atacante fica reduzido a testar chaves uma a uma. O AES-256 tem 2^256 chaves possíveis; mesmo a um trilhão de trilhões de tentativas por segundo, você ainda precisaria de muito mais tempo do que a idade do universo para vasculhar uma fração significativa. Os riscos reais nunca são a própria cifra: são uma frase-senha fraca, um IV reutilizado, uma chave vazada ou um oráculo de padding em um sistema mal construído. Escolha uma frase-senha forte e nada disso se aplica. Quem anuncia 'recuperação de AES' sem a chave está vendendo um golpe.
GCM vs CBC — qual modo devo usar?
Use GCM. Ele oferece confidencialidade mais uma tag de autenticação embutida de 128 bits, então se um único byte do texto cifrado for alterado, a descriptografia falha em vez de devolver silenciosamente dados corrompidos. O CBC apenas esconde os dados; sozinho ele não consegue detectar adulteração e tem um longo histórico de vulnerabilidades de oráculo de padding (Vaudenay, EUROCRYPT 2002), motivo pelo qual o TLS 1.3 (RFC 8446) removeu todas as suítes de cifra CBC. A única boa razão para escolher CBC aqui é a interoperabilidade com um sistema existente — por exemplo, o comando enc do OpenSSL, que não tem suporte a GCM.
AES-128 vs AES-256 — vale a pena usar 256?
Ambos são considerados seguros; o AES-128 não está quebrado e é ligeiramente mais rápido. O AES-256 tem uma chave maior e uma margem de segurança maior, e é o tamanho aprovado pelo conjunto CNSA 2.0 da NSA para informações até TOP SECRET, motivo pelo qual é um padrão sensato. O custo é mínimo — algumas rodadas extras por bloco. A menos que você esteja otimizando um caminho crítico muito exigente, criptografe com AES-256; a margem extra de segurança é praticamente gratuita na prática.
Meus dados são enviados quando eu criptografo aqui?
Não. Toda a criptografia roda localmente por meio da Web Crypto API do navegador (crypto.subtle), a mesma implementação auditada que seu navegador usa para HTTPS. Nada do que você digita é enviado a lugar nenhum — você pode abrir o painel Rede das ferramentas de desenvolvedor, criptografar algo e observar zero requisições disparando, ou desconectar totalmente da internet e a ferramenta continua funcionando. O SubtleCrypto só está disponível em contextos seguros (HTTPS), o que é parte do motivo dessa garantia se sustentar.
Qual é a diferença entre uma frase-senha e uma chave?
Uma chave é exatamente 128, 192 ou 256 bits de dados aleatórios — para o AES-256 isso são 32 bytes brutos, geralmente escritos em hex ou Base64. Uma frase-senha é texto digitado por humanos, de qualquer comprimento, e não é ela mesma uma chave: precisa ser esticada em uma por uma função de derivação de chave. Esta ferramenta faz isso automaticamente no modo frase-senha com PBKDF2-HMAC-SHA256, 600.000 iterações e um sal aleatório. Confundir os dois — colar uma frase-senha no campo de chave bruta, ou vice-versa — é um dos motivos mais comuns de dois sistemas não concordarem sobre um texto cifrado. (Para tokens assinados em vez de criptografia, veja o codificador JWT.)
Posso criptografar de forma que o OpenSSL ou o CryptoJS consigam descriptografar?
Sim. Ative o modo compatível com OpenSSL (com AES-CBC e uma frase-senha) e a ferramenta emite o formato Salted__ que o comando enc do OpenSSL e o CryptoJS entendem, e mostra o comando openssl equivalente exato. Escolha a função de derivação de chave correspondente: PBKDF2 para o OpenSSL moderno (o padrão de openssl -pbkdf2 é 10.000 iterações), EVP-SHA256 para OpenSSL 1.1+ sem -pbkdf2, ou EVP-MD5 para CryptoJS e OpenSSL 1.0.2 e anteriores. Para ir no sentido contrário e ler o texto cifrado de outra pessoa, use a ferramenta de descriptografia AES.

Ferramentas relacionadas

Ver todas as ferramentas →

Ferramenta de Descriptografia AES — OpenSSL e CryptoJS

Ferramentas de Segurança

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.

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.