Base64
Base64 é uma codificação de binário para texto que representa bytes através de um alfabeto de 64 caracteres.
Definição
Base64 representa bytes arbitrários como texto para os transportar por sistemas orientados a caracteres. O alfabeto padrão contém letras latinas maiúsculas e minúsculas, algarismos, + e /; no fim pode surgir = como preenchimento.
Base64 só altera a representação. Por si só, não oferece confidencialidade, autenticidade ou integridade e pode ser descodificado sem chave.
Como funciona
O codificador pega em 3 bytes, divide os 24 bits em quatro valores de 6 bits e associa cada valor a um dos 64 caracteres. Se o último grupo tiver apenas 1 ou 2 bytes, = costuma marcar a parte em falta e torna o comprimento múltiplo de quatro.
Em entradas grandes, o resultado ocupa cerca de um terço a mais. Base64url troca + e / por - e _ e muitas vezes omite o preenchimento, pelo que as variantes nem sempre são intercambiáveis.
Exemplo prático
Os bytes ASCII e UTF-8 de Hi são 48 69 em hexadecimal. Base64 padrão representa-os como SGk=. A descodificação recupera os mesmos bytes, que interpretados como UTF-8 produzem Hi.
Base64 também pode conter uma imagem, dados comprimidos ou texto cifrado; descodificar com êxito não garante texto legível.
Formatos e erros frequentes
As aplicações têm de concordar quanto à variante, ao preenchimento e aos espaços permitidos. Um descodificador rigoroso pode rejeitar o que outro aceita. Antes da codificação, o texto é convertido em bytes através de uma codificação de caracteres como UTF-8; outra codificação produz um Base64 diferente.
Não. É uma codificação pública e reversível sem chave secreta. Os dados confidenciais devem ser primeiro protegidos por um esquema criptográfico adequado.
O preenchimento completa o último grupo de quatro caracteres quando o número de bytes não é divisível por três. Pode haver um ou dois sinais; alguns formatos omitem-nos.
Agrupam os bits da mesma forma, mas Base64url usa caracteres seguros para URL e costuma omitir o preenchimento. Deve usar-se a variante exigida pelo protocolo.