O que é codificação Base64? Um primeiro exemplo com bytes reais

Entenda o propósito de Base64, consulte Olá, torne-se SGVsbG8= e reconheça a diferença entre codificação e criptografia.

Base64 é uma forma de representar dados binários com caracteres de texto comuns. Uma imagem, um documento ou um trecho de texto podem ser representados como bytes. Quando um sistema precisa desses bytes dentro de um campo de texto, Base64 fornece uma ortografia reversível que o receptor pode decodificar posteriormente.

Um pequeno exemplo

O texto Hello contém cinco bytes ASCII. Codificar esses bytes produz SGVsbG8=. A decodificação desse valor retorna os mesmos cinco bytes, que podem então ser lidos como o texto original. O sinal de igual pertence ao grupo final da codificação; não faz parte da palavra Olá.

Text:           Hello
Bytes in Hex:   48 65 6c 6c 6f
Base64:         SGVsbG8=
Decoded bytes:  48 65 6c 6c 6f

Experimente o exemplo no codificador, copie o resultado no decodificador e compare o texto retornado. Em seguida, experimente um caractere chinês ou emoji. O texto deve primeiro se tornar bytes usando uma codificação de caracteres como UTF-8; O próprio Base64 não define um idioma ou conjunto de caracteres.

Onde você o encontra

Exemplos comuns incluem um campo binário em JSON, uma imagem embutida em Data URI e as partes legíveis de determinados tokens. O formato circundante fornece o contexto. Uma string Base64 por si só não informa o nome do arquivo original, tipo MIME, codificação de caracteres ou se o conteúdo é confiável.

Um Data URI adiciona um prefixo como data:image/png;base64,. Esse prefixo descreve a carga útil, mas não faz parte do alfabeto Base64. Alguns decodificadores entendem o wrapper; outros esperam apenas a parte após a vírgula. Escolha a ferramenta ou modo apropriado em vez de excluir caracteres desconhecidos aleatoriamente.

Três mal-entendidos comuns

Primeiro, Base64 não é criptografia: nenhum segredo é necessário para decodificá-lo. Em segundo lugar, não torna os arquivos menores; a saída preenchida comum é aproximadamente um terço maior que os bytes originais. Terceiro, nem todo resultado decodificado é texto. Uma imagem pode ser decodificada corretamente em bytes que parecem absurdos em uma caixa de texto.

Quando uma decodificação falha, verifique a fonte original, o alfabeto escolhido e se a string foi truncada. Quando tiver sucesso, escolha uma visualização adequada: texto para bytes de texto válidos, Hex para inspeção ou download de arquivo para dados binários. O alfabeto Base64 detalhado e exemplos são definidos em RFC 4648.