Seus dados são 100% privados -- o Base64 é codificado e decodificado totalmente no seu dispositivo.
Base64 é uma forma de representar dados binários como texto simples usando 64 caracteres ASCII: A–Z, a–z, 0–9, mais + e /. Ele permite que dados binários como imagens, chaves e anexos de e-mail trafeguem com segurança por sistemas feitos para texto. É codificação, não criptografia.
O Base64 usa um alfabeto fixo de 64 caracteres. Cada valor de 0 a 63 mapeia para exatamente um deles, e é assim que quaisquer 3 bytes de binário viram 4 caracteres legíveis:
| Valores | Caracteres | |
|---|---|---|
| 0–25 | A–Z | 26 letras maiúsculas |
| 26–51 | a–z | 26 letras minúsculas |
| 52–61 | 0–9 | 10 dígitos |
| 62–63 | + / | 2 símbolos |
O sinal "=" é a única exceção. Ele é preenchimento, não um dos 64 valores, e só arredonda o último bloco.
Você quase certamente já viu isso. O Base64 aparece sempre que dados binários precisam trafegar dentro de texto:
Esse truque de data URI fica assim. A longa sequência é a imagem inteira:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Os primeiros protocolos de rede foram feitos para texto, não para bytes brutos. O ASCII usava 7 bits e 128 caracteres, o que servia bem para o inglês, mas não para binário. Alguns sistemas corrompiam caracteres de controle ou reescreviam quebras de linha (LF para CR + LF), corrompendo silenciosamente imagens e áudio em trânsito.
O Base64 contorna tudo isso emitindo apenas caracteres com os quais todo sistema já concorda. Base16 e Base32 fazem o mesmo trabalho com alfabetos menores, mas o Base64 empacota mais dados por caractere mantendo a segurança. Foi por isso que venceu.
Todo o esquema é uma ideia repetida: pegar 3 bytes (24 bits), refatiá-los em quatro grupos de 6 bits e procurar cada grupo no alfabeto. Veja a palavra "Logto", codificada à mão.
Passo 1. Transforme cada caractere em seu binário de 8 bits:
| Caractere | Código ASCII | Binário |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Passo 2. Pegue os três primeiros bytes, "Log", e refatie esses mesmos 24 bits em quatro grupos de 6 bits:
Passo 3. Leia cada grupo de 6 bits como um número e procure o número no alfabeto:
| Grupo de 6 bits | Valor | Caractere Base64 |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" tem 5 bytes, não é múltiplo de 3. Os dois últimos bytes, "to", deixam uma divisão de 6 + 6 + 4. Preencha esses últimos 4 bits com zeros para completar um grupo de 6 bits e adicione um "=" para completar o bloco de 4 caracteres:
Junte os blocos:
"Logto" → TG9ndG8=Toda linguagem já traz isso embutido. No Node.js:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Três regras surgem desse processo, que vale a pena ter em mente:
Recorra ao Base64 quando dados binários precisam passar por um canal somente texto:
O que você ganha em troca:
O Base64 padrão depende de três caracteres que entram em conflito com o funcionamento de URLs, query strings e nomes de arquivo: +, / e o preenchimento =. Coloque uma string Base64 normal em um link e ela pode quebrar de formas silenciosas:
Você pode aplicar percent-encoding (+ vira %2B, / vira %2F, = vira %3D), mas isso aumenta a string e é fácil codificar duas vezes por engano.
O Base64URL (RFC 4648 §5) resolve isso na origem: troca + por -, troca / por _ e remove o preenchimento =. O resultado entra direto numa URL, parâmetro de consulta ou nome de arquivo sem nada a escapar. Você vai vê-lo em URLs, nomes de arquivo e muitas APIs web.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8O Base64 é uma representação, não um almoço grátis. Tenha três coisas em mente:
Não. É codificação reversível com um alfabeto público, então qualquer um pode decodificá-lo instantaneamente e não adiciona nenhuma confidencialidade. Criptografe dados sensíveis em vez disso.
O Base64 transforma cada 3 bytes em 4 caracteres, então a forma codificada é sempre cerca de um terço maior que os bytes originais.
São preenchimento que mantém a saída em um múltiplo de 4 caracteres. Um "=" significa que a entrada tinha 2 bytes restantes; dois "=" significam que tinha 1; nenhum "=" significa que o comprimento já era múltiplo de 3 bytes.
O Base64URL é a mesma codificação com um alfabeto seguro para URL e nomes de arquivo: - e _ substituem + e /, e o preenchimento = costuma ser removido. É comum em URLs, nomes de arquivo e muitas APIs web.
Qualquer binário: imagens, PDFs, chaves, executáveis. O Base64 trabalha com bytes brutos, então o tipo de conteúdo original não importa.
Não. A codificação e a decodificação rodam inteiramente no seu navegador. Nada que você cola é enviado ou registrado.