GeradoresOnline

Base64 não é criptografia: encoding, hash e criptografia

Entenda a diferença entre codificação, hash e criptografia, como o Base64 funciona por dentro e por que ele nunca protege dados sensíveis.

Por Equipe L9 · Publicado em 23/09/2026 · 4 min de leitura

Um texto como T2xhLCBtdW5kbyE= parece embaralhado, e é fácil concluir que está protegido. Não está: é só Ola, mundo! escrito em Base64, e qualquer pessoa o lê em segundos. Confundir codificação, hash e criptografia é uma das origens mais comuns de falhas de segurança em sistemas reais. Este guia separa os três conceitos e mostra como o Base64 funciona por dentro.

Três coisas que parecem iguais e não são

  • Codificação (encoding): converte dados de uma representação para outra para que possam ser transportados ou exibidos. Não usa segredo e é reversível por qualquer um. Exemplos: Base64, URL encoding, entidades HTML.
  • Hash: gera um resumo de tamanho fixo que identifica o conteúdo. É de mão única: não existe "desfazer". Serve para integridade e verificação, não para esconder dados. Veja MD5, SHA-1 e SHA-256: qual usar e para quê.
  • Criptografia: embaralha os dados de modo que só quem tem a chave consegue reverter. É a única das três que protege a confidencialidade. Exemplo: AES.

Regra prática: se você consegue desfazer a transformação sem conhecer nenhum segredo, isso não é proteção.

Como o Base64 funciona

Computadores lidam com bytes (8 bits), mas vários canais de texto, como e-mail, JSON e URLs, não aceitam bytes arbitrários. O Base64 resolve isso usando um alfabeto de 64 caracteres seguros: as letras maiúsculas A-Z, as minúsculas a-z, os dígitos 0-9, e os símbolos + e /.

O processo é este:

  1. Agrupe os bytes de três em três (24 bits).
  2. Divida esses 24 bits em quatro blocos de 6 bits.
  3. Cada bloco de 6 bits (valor de 0 a 63) vira um caractere do alfabeto.
  4. Se sobrarem bytes no final (um ou dois), completa-se com o caractere =.

Exemplos clássicos:

"Man"  →  TWFu       (3 bytes → 4 caracteres, sem preenchimento)
"Ma"   →  TWE=       (2 bytes → 3 caracteres + 1 "=")
"M"    →  TQ==       (1 byte  → 2 caracteres + 2 "=")

Como cada 3 bytes viram 4 caracteres, o Base64 aumenta o tamanho em cerca de um terço (4/3). É o preço de poder transportar qualquer dado em texto puro.

Acentos e UTF-8

O Base64 opera sobre bytes, não sobre letras. Portanto, o texto precisa ser convertido para bytes antes, normalmente em UTF-8. A palavra ação tem 6 bytes em UTF-8 (cada letra acentuada ocupa dois) e vira YcOnw6Nv. Um erro frequente em JavaScript é passar texto com acentos direto à função btoa(): ela só aceita caracteres de um byte e lança uma exceção com outros. A solução é codificar o texto em UTF-8 antes. Você pode testar isso no codificador de Base64.

Base64URL: a variante para URLs e tokens

Os símbolos + e / têm significado especial em URLs. A variante Base64URL troca-os por - e _ e costuma dispensar o preenchimento com =. É essa variante que aparece nos tokens JWT, explicados em JWT: como funciona e por que decodificar não é validar. Para outros caracteres especiais em endereços, veja também o URL encode/decode.

Onde o Base64 é útil

  • Anexos de e-mail (MIME), que historicamente só aceitavam texto.
  • Imagens embutidas diretamente em HTML ou CSS por meio de data URIs.
  • Transportar dados binários dentro de JSON ou XML.
  • Partes de tokens e cabeçalhos HTTP.

Onde ele é mal usado

O cabeçalho HTTP Authorization: Basic, por exemplo, envia usuario:senha em Base64. Isso não é proteção: quem intercepta a requisição decodifica na hora. A segurança nesse caso vem de trafegar tudo por HTTPS, e não do Base64. O mesmo vale para "esconder" chaves de API ou senhas em arquivos de configuração codificados: quem abrir o arquivo lê o conteúdo.

Se o objetivo é realmente proteger um texto, é preciso criptografia com uma chave secreta bem guardada, como a que o site oferece na ferramenta de criptografia AES, e mesmo assim o resultado costuma ser convertido para Base64 só para poder ser copiado e transportado. Ou seja, os dois conceitos trabalham juntos: a criptografia protege, o Base64 apenas transporta.

Ferramentas relacionadas

Continue lendo

Gostou das ferramentas? Ajude a manter o site no ar: apoiar via Pix · Sobre · Contato · Política de Privacidade