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.
Opções avançadas
Nunca reutilize um IV com a mesma chave. Deixe em branco para gerar um IV aleatório seguro.
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
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
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
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
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
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.
Key type: Raw key Key (hex): correct horse battery staple (not hex, not 32 bytes)
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.
// same key, same IV for two messages encrypt(key, iv, a); encrypt(key, iv, b);
// 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.
stored = ciphertext // salt + IV + tag thrown away
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.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
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?
O AES pode ser descriptografado sem a chave?
GCM vs CBC — qual modo devo usar?
AES-128 vs AES-256 — vale a pena usar 256?
Meus dados são enviados quando eu criptografo aqui?
Qual é a diferença entre uma frase-senha e uma chave?
Posso criptografar de forma que o OpenSSL ou o CryptoJS consigam descriptografar?
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.