Saltar para o conteúdo
BCBinary Code Translator
Menu
Voltar ao blog
Boas práticas

Quando usar Base64 — e quando escolher outra solução

Saiba quando Base64 é adequado para transportar bytes em texto, qual é o custo e por que razão não substitui ficheiros, compressão, hashes ou encriptação.

3 min de leitura
Por Binary Code Translator
#base64#codificação#api#desempenho#segurança

Cenários adequados e inadequados para Base64, em português

Base64 representa dados binários com um alfabeto de carateres ASCII. É uma solução de compatibilidade para canais orientados a texto; não comprime, não encripta e não valida os dados.

Como funciona o custo de tamanho

O formato divide os dados em blocos de 3 bytes (24 bits) e produz 4 símbolos de 6 bits. Antes de considerar cabeçalhos ou quebras de linha, o comprimento codificado é:

4 × teto(número_de_bytes / 3)

Para entradas grandes, isto representa cerca de 33% de crescimento. Entradas curtas podem ter uma proporção ainda maior devido ao preenchimento =. A compressão aplicada ao transporte pode reduzir o efeito em alguns conteúdos, mas não elimina o trabalho de codificar e descodificar.

Bons casos de utilização

Campos de texto que precisam de transportar bytes

Uma API JSON pode incluir uma assinatura, uma chave pública ou um pequeno bloco binário quando o esquema não admite bytes diretamente. A documentação deve indicar a variante Base64, o uso de preenchimento e o limite de tamanho.

Protocolos que especificam Base64

MIME, cabeçalhos de autenticação e outros formatos definidos por normas podem exigir uma representação Base64 específica. Nesse caso, siga a norma aplicável em vez de inventar uma variante.

Recursos pequenos e incorporados

Um Data URL pode incorporar uma imagem pequena em HTML ou CSS:

data:image/png;base64,iVBORw0KGgo...

Isto pode ser útil para um recurso minúsculo e autónomo. O tipo MIME e o conteúdo continuam a precisar de validação.

Casos em que costuma ser uma má escolha

Ficheiros grandes em JSON ou numa base de dados

O crescimento do conteúdo aumenta memória, tempo de análise e limites de pedidos. Para ficheiros grandes, o armazenamento de objetos e um URL com autorização adequada costumam ser mais eficientes.

Imagens que beneficiam de cache independente

Uma imagem incorporada num documento não tem a mesma identidade de cache de um ficheiro servido separadamente. Qualquer alteração ao documento pode obrigar a transferir novamente todos os dados incorporados.

Conteúdo que precisa de ficar confidencial

Qualquer pessoa pode descodificar Base64. Para confidencialidade, use encriptação autenticada; para palavras-passe, use uma função de derivação adequada; para integridade, use um MAC ou uma assinatura conforme o modelo de ameaça. Um hash isolado não é encriptação.

Conteúdo já textual

Codificar texto UTF-8 em Base64 sem uma restrição de transporte só aumenta o tamanho e dificulta a inspeção. JSON já representa texto Unicode e dispõe de escapes para carateres especiais.

Perguntas antes de escolher

  • O canal aceita bytes diretamente?
  • Existe uma norma que imponha Base64 ou Base64url?
  • Qual é o tamanho máximo após a codificação?
  • É necessário processamento progressivo ou em fluxo?
  • O recurso deve ser armazenado em cache separadamente?
  • O objetivo real é compatibilidade, integridade ou confidencialidade?

Base64url troca + e / por - e _, sendo mais conveniente em URLs e nomes de ficheiro. Não assuma, porém, que Base64 e Base64url são intercambiáveis: confirme o alfabeto e as regras de preenchimento.

Use o codificador e descodificador Base64 para testar texto ou o conversor de imagem para Base64 para um ficheiro local. Para componentes de URL, prefira o codificador e descodificador de URL; percent-encoding e Base64 resolvem problemas diferentes.

Preferências de cookies

Gerir as preferências de cookies. Os cookies necessários não podem ser desativados.

Necessários

Obrigatório

Necessários para seleção de idioma, escolhas de privacidade e funcionalidades básicas do site.

Cookies: NEXT_LOCALE

Análises

Cookies opcionais de análise ajudam a entender o tráfego e melhorar o site.

Cookies: _ga, _gid, _gat, _clck, _clsk

Publicidade

Cookies opcionais de publicidade podem ser usados para mostrar anúncios relevantes e medir desempenho.

Cookies: __gads, _gcl_au, IDE