Informática
Conversor Base64: texto, inteiros, hexadecimal e binário
Digite um valor em qualquer um dos cinco formatos e obtenha na hora todos os outros: a string Base64, o texto, os bytes em hexadecimal e em binário e o inteiro que eles representam. Abaixo, veja como os caracteres nascem, seis bits de cada vez.
O que é Base64 e quando se usa
Base64 é um jeito de escrever bytes quaisquer usando apenas 64 caracteres seguros: letras maiúsculas e minúsculas, dígitos, o mais e a barra. É necessário quando dados binários precisam passar por um canal feito para texto: anexos de e-mail, imagens embutidas em uma página como data URI, chaves e certificados em arquivos PEM, tokens JWT.
O mecanismo é simples: pegam-se três bytes, ou seja, 24 bits, e divide-se em quatro grupos de seis. Seis bits vão de 0 a 63, e cada valor corresponde a um caractere. Quando sobram um ou dois bytes no final, eles são completados com zeros e o sinal = indica quantos caracteres não levam dados. Por isso uma string Base64 é sempre cerca de um terço mais longa que os dados originais.
Base64 não é criptografia: qualquer pessoa pode decodificá-lo sem chave. Ele converte, não protege. A variante URL-safe troca + e / por - e _, porque os dois primeiros têm significado em endereços web, e muitas vezes omite o padding.
Erros comuns
- Achar que Base64 serve para esconder uma senha: é uma codificação que qualquer um pode reverter e não oferece segurança nenhuma.
- Decodificar como texto dados que não são texto: uma imagem ou uma chave em Base64 geram bytes que não formam UTF-8 válido, e isso é normal.
- Misturar os dois alfabetos: uma string URL-safe com - e _ passada a um decodificador padrão é rejeitada, ou lida errado se ele ignorar caracteres desconhecidos.
Perguntas frequentes
Por que a string Base64 termina com um ou dois sinais =?
Porque os dados não eram múltiplo de três bytes. Com um byte sobrando saem dois caracteres e dois =, com dois bytes três caracteres e um =. O padding diz ao decodificador quantos bytes reconstruir; muitos decodificadores, inclusive este, aceitam mesmo sem ele.
Quanto um arquivo fica maior em Base64?
Cada três bytes viram quatro caracteres, ou seja, cerca de 33% a mais, arredondado para múltiplo de quatro. Uma imagem de 30 kB vira uma string de uns 40 kB.
O que significa o inteiro big-endian?
Os bytes são lidos como um único número, com o primeiro byte como dígito mais significativo na base 256. Os bytes 01 00 valem 256. É a mesma ordem usada nos protocolos de rede e nos números grandes da criptografia.
Por que o texto decodificado mostra caracteres estranhos ou não aparece?
Porque os bytes não são texto UTF-8: podem ser uma imagem, um arquivo compactado ou um texto em outra codificação, como Latin-1. Nesse caso o que vale é o hexadecimal, que mostra os bytes como eles são.
Como funciona este cálculo
Cada grupo de três bytes b₁ b₂ b₃ forma o número N = b₁·65536 + b₂·256 + b₃. Os quatro caracteres são as posições ⌊N / 262144⌋, ⌊N / 4096⌋ mod 64, ⌊N / 64⌋ mod 64 e N mod 64 no alfabeto ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/. A decodificação faz o caminho inverso. O inteiro é a soma dos bytes ponderados por 256 elevado à sua posição contada a partir da direita.
Calculadoras relacionadas
Conversor de bases numéricas
Binário, octal, decimal, hexadecimal e complemento de dois.
Álgebra booleana
Tabela-verdade de uma expressão lógica com AND, OR, NOT e XOR.
Ponto flutuante IEEE 754
Como um decimal é guardado em float de 32 ou 64 bits: sinal, expoente, mantissa e erro.
Códigos Unicode e UTF-8
O code point, os bytes UTF-8 e UTF-16 e o código HTML de cada caractere, emoji incluídos.