Base64 explicada: o que é, quando usá-lo e quando não usá-lo
Se você trabalha com a Web há mais de uma semana, encontrará o Base64: longas sequências de letras e números aparentemente aleatórios e os ocasionais "+", "/" ou "=" que aparecem em URIs de dados, cargas JSON e tokens. Parece enigmático, mas o conceito é simples — e entendê-lo esclarece uma quantidade surpreendente de confusão.
O que o Base64 realmente faz
Os computadores armazenam tudo como binário. O problema é que muitos sistemas – e-mail, URLs, JSON, XML – foram projetados para texto, e dados binários brutos podem conter bytes que esses sistemas interpretam como caracteres de controle e desfigurados. Base64 resolve isso reexpressando dados binários usando apenas 64 caracteres ASCII seguros e imprimíveis (A – Z, a – z, 0–9, mais dois símbolos). O resultado é um texto que sobrevive intacto a qualquer canal somente de texto.
O formato é formalmente definido na RFC 4648. Você pode codificar e decodificar qualquer string ou arquivo instantaneamente com nosso codificador Base64 e decodificador Base64.
O erro: Base64 NÃO é criptografia
Este é o ponto mais importante de todo o artigo. Base64 é codificação, não criptografia. Não há chave nem segredo – qualquer pessoa que vir uma string Base64 pode decodificá-la de volta ao original em segundos. Nunca use-o para “ocultar” senhas, chaves de API ou quaisquer dados confidenciais. Existe apenas para compatibilidade e transporte seguro, não para confidencialidade. Se você precisa de sigilo, você precisa de criptografia real (como AES) ou hashing (como bcrypt).
Como funciona a codificação (brevemente)
Base64 pega três bytes de entrada (24 bits) e os divide em quatro grupos de 6 bits, mapeando cada grupo para um de seus 64 caracteres. Como três bytes se transformam em quatro caracteres, a saída é cerca de 33% maior que a entrada. Quando a entrada não é um múltiplo limpo de três bytes, os caracteres de preenchimento "=" preenchem a lacuna. O glossário MDN Base64 tem um guia visual claro se você quiser detalhes em nível de bit.
Onde você o encontrará
- URIs de dados: pequenas imagens incorporadas diretamente em CSS ou HTML como
data:image/png;base64,..., salvando uma solicitação HTTP. - JWTs: o cabeçalho e a carga útil de um JSON Web Token são codificados em Base64URL. Descodifique um e você verá as partes reveladas instantaneamente.
- Autenticação básica HTTP: as credenciais são codificadas em Base64 (e é exatamente por isso que a autenticação básica sempre deve ser executada em HTTPS).
- Anexos de e-mail: MIME usa Base64 para enviar arquivos binários através de protocolos de e-mail baseados em texto.
Uma observação sobre o tamanho e quando evitá-lo
Esse aumento de aproximadamente 33% no tamanho significa que o Base64 é ótimo para ativos pequenos, mas uma escolha ruim para arquivos grandes, onde o inchaço supera a conveniência do inlining. Incorporar um pequeno ícone como URI de dados é inteligente; A codificação Base64 de uma imagem principal de 2 MB em seu HTML não é uma opção: ela atrasa a renderização e não pode ser armazenada em cache separadamente.
Resultado
Base64 é um formato de transporte: ele torna seguro a movimentação de dados binários através de canais de texto, nada mais. Use-o para incorporar pequenos ativos, ler tokens e empacotar binários em JSON — e nunca confunda isso com segurança. Quando você precisar inspecionar uma string Base64 em estado selvagem, o decodificador está a um clique de distância.