Base64 Descodificador

/

Os seus dados são 100% privados -- o Base64 é codificado e descodificado integralmente no seu dispositivo.

Texto simples
Base64

O que é Base64?#

Base64 é uma forma de representar dados binários como texto simples usando 64 caracteres ASCII: A–Z, a–z, 0–9, mais + e /. Permite que dados binários como imagens, chaves e anexos de e-mail circulem com segurança por sistemas criados para texto. É codificação, não encriptação.

O Base64 utiliza um alfabeto fixo de 64 caracteres. Cada valor de 0 a 63 corresponde exactamente a um deles, e é assim que 3 bytes de dados binários se transformam em 4 caracteres legíveis:

ValoresCaracteres
0–25A–Z26 letras maiúsculas
26–51a–z26 letras minúsculas
52–610–910 dígitos
62–63+ /2 símbolos

O sinal "=" é a única excepção. É preenchimento, não um dos 64 valores, e apenas arredonda o último bloco.

Certamente já o encontrou antes. O Base64 aparece sempre que dados binários precisam de circular dentro de texto:

  • Incorporar uma imagem ou ícone pequeno directamente em HTML ou CSS
  • Devolver blobs binários dentro de uma resposta de API em JSON
  • Codificar anexos de e-mail (MIME)
  • Armazenar chaves e certificados em ficheiros PEM

Este truque de data URI tem o seguinte aspecto. A longa cadeia de caracteres é a imagem completa:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

Por que existe o Base64?#

Os primeiros protocolos de rede foram criados para texto, não para bytes brutos. O ASCII usava 7 bits e 128 caracteres, o que era suficiente para inglês mas não para binário. Alguns sistemas corrompiam caracteres de controlo ou reescreviam fins de linha (LF para CR + LF), corrompendo silenciosamente imagens e áudio em trânsito.

O Base64 contorna tudo isso emitindo apenas caracteres que todos os sistemas já reconhecem. Base16 e Base32 fazem o mesmo trabalho com alfabetos mais pequenos, mas o Base64 compacta mais dados por caractere mantendo a segurança. Foi por isso que venceu.

Como funciona a codificação Base64#

Todo o esquema é uma ideia repetida: pegar em 3 bytes (24 bits), reparti-los em quatro grupos de 6 bits e procurar cada grupo no alfabeto. Aqui está a palavra "Logto", codificada manualmente.

  1. Escreva cada caractere como binário de 8 bits, usando o seu código ASCII.
  2. Tome 3 bytes de cada vez. São 24 bits.
  3. Rreparta esses mesmos 24 bits em quatro grupos de 6 bits.
  4. Leia cada grupo de 6 bits como um número de 0 a 63.
  5. Consulte esse número no alfabeto para obter um caractere.
  6. Se o último bloco de bytes não chegar a 3, preencha os bits restantes com zeros e adicione "=" para que cada bloco fique com 4 caracteres.

Passo 1. Converta cada caractere no seu binário de 8 bits:

CaractereCódigo ASCIIBinário
L7601001100
o11101101111
g10301100111
t11601110100
o11101101111

Passo 2. Tome os primeiros três bytes, "Log", e rreparta esses mesmos 24 bits em quatro grupos de 6 bits:

bytes de 8 bits
01001100 01101111 01100111
grupos de 6 bits
010011 000110 111101 100111

Passo 3. Leia cada grupo de 6 bits como um número e consulte o número no alfabeto:

Grupo de 6 bitsValorCaractere Base64
01001119T
0001106G
111101619
10011139n

"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:

Una os blocos:

"Logto"  →  TG9ndG8=

Todas as linguagens incluem isto nativamente. No Node.js:

const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=

Três regras decorrem desse processo, que vale a pena ter em mente:

  • 3 entram, 4 saem: O comprimento da saída é a entrada arredondada para um múltiplo de 4 caracteres, pelo que os dados codificados ficam sempre cerca de 33% maiores.
  • "=" significa preenchimento: Só aparece quando a entrada não é múltiplo de 3 bytes.
  • O preenchimento conta as sobras: Nenhum "=" significa múltiplo de 3 bytes, um "=" significa 2 bytes restantes, dois "=" significam 1 byte restante.

Quando deve usar Base64?#

Recorra ao Base64 quando dados binários precisam de passar por um canal exclusivamente de texto:

  • Recursos incorporados: Incorpore uma imagem ou tipo de letra pequenos em HTML/CSS para poupar um pedido.
  • Transportes exclusivamente de texto: Coloque dados binários dentro de JSON, XML ou um parâmetro de consulta de URL.
  • Caracteres restritos: Transfira dados por sistemas que falham com bytes de controlo.

O que obtém em troca:

  • Funciona em todo o lado: Qualquer sistema compatível com ASCII consegue lê-lo, sem negociação de charset.
  • Nada fica corrompido: A saída sobrevive a canais que de outro modo danificariam bytes brutos.

Base64 seguro para URL (Base64URL)#

O Base64 padrão depende de três caracteres que colidem com o funcionamento de URLs, query strings e nomes de ficheiro: +, / e o preenchimento =. Coloque uma cadeia Base64 normal numa ligação e pode quebrar de formas silenciosas:

  • + transforma-se em espaço. Numa query string, muitos servidores interpretam + como espaço. Assim, ?data=ab+cd chega silenciosamente como "ab cd", e os bytes ficam errados.
  • / é separador de caminho. Um / dentro de um valor pode ser interpretado como um novo segmento de caminho, e a maioria dos sistemas de ficheiros rejeita-o num nome de ficheiro.
  • = também é reservado. Separa chaves de valores numa query string, pelo que o preenchimento = no final é removido ou mal interpretado.

Pode aplicar percent-encoding (+ torna-se %2B, / torna-se %2F, = torna-se %3D), mas isso aumenta a cadeia e é fácil fazer dupla codificação por engano.

O Base64URL (RFC 4648 §5) resolve isto na origem: substitui + por -, substitui / por _ e remove o preenchimento =. O resultado pode ser inserido directamente num URL, parâmetro de consulta ou nome de ficheiro sem nada a escapar. Encontrá-lo-á em URLs, nomes de ficheiro e muitas APIs web.

const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8

Limitações (e um grande equívoco)#

O Base64 é uma representação, não um almoço grátis. Tenha três coisas em mente:

  • É ~33% maior: 3 bytes tornam-se 4 caracteres, pelo que os dados codificados aumentam cerca de um terço.
  • Tem custo de CPU: Codificar e descodificar não é gratuito em grande volume ou com payloads extensos.
  • É ilegível: Cadeias opacas dificultam registos e depuração.
Base64 não é encriptação. Este é o erro mais comum. O Base64 não esconde nada. Qualquer pessoa pode descodificá-lo numa linha. Se os dados forem sensíveis, encripte-os. O Base64 apenas muda a forma, nunca quem os pode ler.

Perguntas frequentes#

O Base64 é encriptação ou é seguro?

Não. É codificação reversível com um alfabeto público, pelo que qualquer pessoa pode descodificá-lo instantaneamente e não acrescenta qualquer confidencialidade. Encripte os dados sensíveis em vez disso.

Por que é que a minha cadeia Base64 é cerca de 33% maior?

O Base64 transforma cada 3 bytes em 4 caracteres, pelo que a forma codificada é sempre cerca de um terço maior do que os bytes originais.

O que significam os sinais "=" no final?

São preenchimento que mantém a saída como 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.

Qual é a diferença entre Base64 e Base64URL?

O Base64URL é a mesma codificação com um alfabeto seguro para URL e nomes de ficheiro: - e _ substituem + e /, e o preenchimento = é normalmente removido. É comum em URLs, nomes de ficheiro e muitas APIs web.

O Base64 pode codificar qualquer ficheiro ou apenas texto?

Qualquer dado binário: imagens, PDFs, chaves, executáveis. O Base64 trabalha com bytes brutos, pelo que o tipo de conteúdo original não importa.

Esta ferramenta envia os meus dados para algum lado?

Não. A codificação e a descodificação são executadas inteiramente no seu navegador. Nada do que cola é enviado ou registado.

Desbloqueie mais com a Logto Cloud