# Onde o Base64 aparece: data URIs, MIME, PEM e Basic auth

> Os lugares reais em que binário é embrulhado em texto, o custo de tamanho de fazer isso e por que Base64 em um cabeçalho de autenticação não é criptografia.

Source: https://ronutz.com/pt-BR/learn/base64-in-practice  
Updated: 2026-06-27  
Related tools: https://ronutz.com/pt-BR/tools/base64

---

## Por que embrulhar binário em texto

Muitos meios de transporte foram feitos para texto, não para bytes brutos: corpos de e-mail, documentos JSON e XML, cabeçalhos HTTP, arquivos-fonte. Coloque binário bruto em qualquer um deles e um byte de controle ou nulo perdido pode quebrar a análise. O Base64 resolve isso reexpressando os bytes usando apenas caracteres imprimíveis seguros, de modo que o binário possa trafegar dentro de um canal somente texto intacto. Eis onde isso realmente acontece.

## Os cenários comuns

- **Data URIs.** Uma URL `data:` incorpora um pequeno recurso diretamente na marcação ou no CSS, por exemplo `data:image/png;base64,iVBORw0KGgo...`. Os bytes da imagem ficam em Base64 ali mesmo no atributo, poupando uma requisição de rede separada para recursos minúsculos.
- **E-mail (MIME).** Anexos e corpos não-ASCII são transportados com `Content-Transfer-Encoding: base64`. O MIME quebra a saída em linhas (classicamente de 76 caracteres) para que servidores de correio antigos não engasguem com linhas longas.
- **PEM.** Certificados e chaves são bytes DER embrulhados em Base64 entre os marcadores `-----BEGIN CERTIFICATE-----` e `-----END CERTIFICATE-----`, com linhas quebradas em 64 caracteres. O PEM é o motivo pelo qual um certificado é um bloco de texto que você pode colar em um arquivo de configuração.
- **Autenticação HTTP Basic.** O cabeçalho `Authorization: Basic` é o Base64 de `usuário:senha`.

## O custo de tamanho

O Base64 não é de graça. Três bytes viram quatro caracteres, então a forma codificada é cerca de **33% maior** que a original, antes de qualquer sobrecarga de quebra de linha. Essa troca geralmente vale a pena pela correção em um canal de texto, mas é o motivo pelo qual você não codificaria em Base64 um arquivo grande que poderia enviar como bytes brutos. Para pequenos recursos embutidos, a conveniência vence; para cargas grandes, a sobrecarga favorece um transporte binário.

## Codificação não é criptografia

O exemplo do Basic auth já deixa o ponto mais importante claro. `Authorization: Basic dXNlcjpwYXNz` parece opaco, mas `dXNlcjpwYXNz` é simplesmente o Base64 de `user:pass`, reversível por qualquer pessoa, sem nenhuma chave envolvida. O Base64 não oferece **nenhuma confidencialidade**. É uma codificação (uma mudança reversível de representação), não criptografia (um segredo protegido por chave) e nem hashing (uma impressão digital de mão única). É por isso que o Basic auth só é seguro sobre TLS: o transporte criptografa o cabeçalho, porque o Base64 certamente não o faz.

Sempre que você vir uma string longa de aparência opaca, decodificá-la primeiro é uma forma barata de descobrir o que ela é. A [ferramenta Base64](https://ronutz.com/pt-BR/tools/base64) decodifica data URIs, corpos PEM e cabeçalhos de autenticação para seus bytes e texto brutos, inteiramente no seu navegador, então nada do que você cola sai da página.
