Pular para o conteúdo
Quaestio

Base64

Digite ou cole um texto e ele é codificado ou decodificado enquanto você escreve.

0 caracteres · 0 bytes

Resultado

Digite algo no campo acima.
Incorporar

Incorpore esta ferramenta no seu site

Copie o código e cole onde a ferramenta deve aparecer, como num post de blog ou numa página escolar. É gratuito, o quadro não tem anúncios e a ferramenta calcula no navegador do visitante.

Como funciona

O base64 reescreve bytes quaisquer usando 64 caracteres que sobrevivem ao transporte por sistemas feitos para texto, como e-mail e endereços web.

Três bytes viram quatro caracteres, o que deixa o resultado cerca de um terço maior que o original. Os sinais de igual no final são preenchimento, usado quando o número de bytes não é divisível por três.

Base64 é codificação, não criptografia. Qualquer um consegue decodificar, então não protege nada. Use para transportar dados, nunca para escondê-los.

O texto é codificado em UTF-8 antes da conversão, e é por isso que letras acentuadas e emoji funcionam. A função nativa do navegador sozinha só lida com caracteres abaixo de 256.

A variante segura para URLs troca o mais pelo hífen e a barra pelo sublinhado. A decodificação aqui aceita as duas variantes, com ou sem preenchimento.

Como a ferramenta funciona

Ao codificar, a ferramenta primeiro transforma o texto em bytes UTF-8 e depois deixa a função btoa do navegador escrevê-los em base64. Ao decodificar, ela remove todo espaço em branco, inclusive quebras de linha no meio do texto, troca hífens e sublinhados de volta por mais e barra, e acrescenta sinais de igual até o comprimento ser divisível por quatro. Então a função atob do navegador decodifica, e os bytes são lidos como UTF-8 em modo estrito: bytes que não formam UTF-8 válido geram uma mensagem de erro em vez de caracteres de substituição. Abaixo do campo aparecem caracteres e bytes. Os caracteres são contados como o leitor os vê, então um emoji com tom de pele é um caractere, mas ocupa oito bytes em UTF-8, e são os bytes que definem o tamanho do resultado.

Exemplo

Pé vira três bytes em UTF-8: 50 para o P e C3 A9 para o é. Os 24 bits se dividem em quatro grupos de seis, 010100, 001100, 001110 e 101001, que são 20, 12, 14 e 41. No alfabeto base64, em que A–Z valem 0–25 e a–z valem 26–51, eles correspondem a U, M, O e p. O resultado é UMOp, sem preenchimento, porque três bytes cabem exatamente em quatro caracteres.

Sim! tem quatro bytes e vira U2ltIQ==. O quarto byte preenche só dois caracteres de um novo grupo de quatro, e os dois sinais de igual completam o grupo.

Casos-limite

A ferramenta trabalha com texto. Um base64 que guarda dados binários, como uma imagem ou um arquivo compactado, em geral gera a mensagem de erro ao ser decodificado, porque os bytes não são UTF-8 válido.

No e-mail, o base64 é quebrado em linhas: a RFC 2045 permite no máximo 76 caracteres por linha e diz que as quebras de linha devem ser ignoradas na decodificação. Como a ferramenta remove todo espaço em branco antes, uma parte de texto codificada de um e-mail pode ser colada como está.

Uma sequência cujo comprimento deixa resto 1 na divisão por quatro nunca é válida. Um último caractere sozinho carrega só seis bits, menos que um byte inteiro, então o algoritmo do Infra Standard do WHATWG, que a atob segue, rejeita essa entrada. U2ltI, que é U2ltIQ== sem os três últimos caracteres, gera a mensagem de erro, enquanto U2ltIQ, sem os sinais de igual, decodifica para Sim!.

Fontes

Como as ferramentas são verificadas