Anúncios incomodam? Ir Sem anúncios Hoje

Codificação Base64 Explicada O Que É, O Que Não É e Quando Usar

Publicado em
Codificação Base64 explicada: O que é, o que não é e quando usá-la
ANUNCIADO Remover?

Se você já viu uma parede de letras como SGVsbG8gV29ybGQ= e assumiu que estava criptografado — você não está sozinho. Base64 é um dos ferramentas mais mal compreendidos no kit de ferramentas de um desenvolvedor. Ele não ciframento. Não protege seus dados. Ele apenas torna os dados binários seguros para viajar por sistemas que só aceitam texto.

O que é realmente o Base64

Base64 é um esquema de codificação que converte dados binários em uma string de 64 caracteres impressíveis da ASCII: A-Z, a-z, 0-9. +e, e /O nome vem do tamanho desse conjunto de caracteres — 64 símbolos, cada um representando 6 bits de dados.

A cada 3 bytes de entrada (24 bits), correspondem 4 caracteres Base64 (4 × 6 bits = 24 bits). Se a comprimento da entrada não for divisível por 3, = caracteres de preenchimento preenchem o grupo final. É por isso que você frequentemente vê um ou dois sinais de igualdade ao final de uma string Base64.

Por que existe

Alguns canais foram construídos exclusivamente para texto. Protocolos antigos de email (SMTP), cabeçalhos HTTP, payloads JSON e atributos HTML possuem restrições sobre quais bytes podem ser transportados sem interpretação incorreta. Um arquivo binário bruto passado por esses canais pode ficar corrompido — bytes nulos removidos, finalizações de linha transformadas, caracteres de controle desencadeando comportamento não intencional.

Base64 contorna tudo isso. Ao converter binário em um conjunto previsível de caracteres imprimíveis, é possível incorporar imagens em URIs de dados CSS, anexar arquivos a e-mails, inserir tokens em cabeçalhos HTTP e incluir payloads binários dentro do JSON. O contra: os dados codificados são cerca de 33% maiores que o original.

Como a Codificação Funciona (Versão Rápida)

Leia a **string** ManEm octetos do ASCII: 77 97 110Em binário: 01001101 01100001 01101110Divida em grupos de 6 bits: 010011 010110 000101 101110Map cada um para o alfabeto Base64: T W F uTWFu.

Ajustes de preenchimento ocorrem quando há bytes restantes. Um byte restante produz dois caracteres Base64 adicionais. ==Dois bytes restantes produzem três caracteres mais =.

Base64 não é Segurança

Este fato deve ser ressaltado. O Base64 é reversível por qualquer pessoa com um decodificador — sem chave necessária, sem senha exigida. Usá-lo para "esconder" senhas, tokens ou dados sensíveis no código do lado do cliente oferece zero proteção. Os atacantes sabem o que o Base64 parece. O final = é um sorteio.

Se você precisa proteger dados em repouso, utilize criptografia apropriada (AES-256). Se precisar proteger dados em trânsito, use TLS. Base64 é uma conveniência de transporte, não uma camada de segurança.

Quando usar Base64

  • URI de dados — insira imagens diretamente no HTML ou CSS: src="data:image/png;base64,iVBOR..."
  • Cabeçalhos de **Autenticação Básica** — Autenticação Básica HTTP codifica username:password Base64 em Authorization Cabeçalho (ainda precisa de HTTPS para segurança real)
  • Token JSON Web (JWT) — **Tokens JWT usam Base64URL para codificar as seções cabeçalho e carga útil**
  • Carregamentos binários em JSON/XML — quando uma API ou formato de mensagem só trabalha com texto
  • Anexos de e-mail O código MIME utiliza o Base64 para codificar partes binárias de arquivos.

Para codificação e decodificação rápidas no seu navegador, a Codificador/decodificador Base64 **TP3T** 1ª versão trata tanto dos padrões padrão quanto das variantes seguras de URL sem precisar instalar nada.

Codificação e Decodificação na Prática

Pitão

import base64

# Encode
encoded = base64.b64encode(b"Hello, World!")
print(encoded)  # b'SGVsbG8sIFdvcmxkIQ=='

# Decode
decoded = base64.b64decode(b"SGVsbG8sIFdvcmxkIQ==")
print(decoded)  # b'Hello, World!'

Bash

# Encode
echo -n "Hello, World!" | base64
# SGVsbG8sIFdvcmxkIQ==

# Decode
echo "SGVsbG8sIFdvcmxkIQ==" | base64 --decode
# Hello, World!

Javascript (Navegador & Node.js)

// Encode (browser)
const encoded = btoa("Hello, World!");
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

// Decode (browser)
const decoded = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(decoded); // Hello, World!

// Node.js
const enc = Buffer.from("Hello, World!").toString("base64");
const dec = Buffer.from(enc, "base64").toString("utf8");

Observação: btoa e atob somente lidar com caracteres do Latim-1 em navegadores. Para strings de Unicode, converta para uma representação em bytes primeiro usando TextEncoder.

Padronização vs. Base64 Seguro para URLs

Base64 padrão utiliza + e / — ambos caracteres de significado especial em URLs e strings de consulta. A Base64 segura para URLs substitui-os para evitar problemas de codificação:

PropriedadeBase64 padrãoBase64 seguro para URL
Conjunto de caracteresDe A a Z, de a a z, de 0 a 9. +, /De A a Z, de a a z, de 0 a 9. -, _
Preenchimento= obrigatório= (geralmente omitido)
URL-friendly?Não — + e / deve ser codificado em percentualSim — seguro em URLs e nomes de arquivos
Uso comumE-mail, MIME, codificação geralTokens JWT, de OAuth e parâmetros de URL

Em Python, utilize base64.urlsafe_b64encode() para saída segura de URL. Os JWTs removem especificamente o final = preenchimento — o que está bem, pois o decodificador pode deduzir isso a partir da comprimento da string.

O aprendizado prático

Base64 resolve um problema específico e bem definido: mover dados binários por canais que só aceitam texto sem corrupção. Ele faz isso bem. Não protege os dados, não os compacta nem valida-os. Quando precisar codificar/decodificar dados em Base64 — seja uma imagem, um token ou um bloco binário — agora você sabe exatamente o que está fazendo e por quê. Use a ferramenta adequada para o trabalho certo, e recorra à criptografia sempre que a segurança realmente seja o objetivo.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?