Codificar e descodificar Base64

Codifique texto ou ficheiros para Base64 e descodifique cadeias de volta para bytes no navegador. Inclui exemplos de padding, o alfabeto RFC 4648 e a variante segura para URL.

Todos os cálculos são executados no navegador. Nada do que você digita é enviado a um servidor.

01 calculadora

Os resultados atualizam ao escrever. Ctrl/Cmd+Enter copia o resultado principal.

Resultado

    Mostrar o procedimento

      A Codificação e decodificação Base64 converte bytes arbitrários numa cadeia ASCII usando o alfabeto RFC 4648, e inverte essa cadeia de volta para os bytes originais. O modo texto aceita uma codificação de caracteres como UTF-8; o modo ficheiro lê um upload através do FileReader do navegador e pode emitir um URI data: para incorporação. Codificar não é encriptação. Quem recebe a cadeia pode descodificá-la.

      Toda a codificação e descodificação corre no seu navegador. Nada do que cola é enviado para um servidor.

      Codificar texto ou um ficheiro para Base64

      Concept diagram: Entradas leads to Codificar texto ou um ficheiro para Base64 leads to ResultadoEntradasCodificar texto ou umficheiro para Base64Resultado
      Codificar texto ou um ficheiro para Base64.

      Codificar toma bytes brutos e escreve uma cadeia de A a Z, a a z, 0 a 9, mais, barra e padding =. Cole texto ou escolha um ficheiro, seleccione codificação de caracteres quando a fonte é texto, e leia a saída.

      O modo ficheiro convém a imagens pequenas e documentos que devem viajar dentro de JSON, XML ou email sem um canal binário.

      A saída é segura para transporte através de sistemas que corrompem binário arbitrário, como gateways de mail antigos ou copy-paste para XML. É mais longa que a entrada por desenho. Entrada vazia inválida não produz cadeia; a ferramenta espera por bytes antes de emitir caracteres.

      Descodificar uma cadeia Base64 de volta para dados

      Concept diagram: Entradas leads to Descodificar uma cadeia Base64 de volta para dados leads to ResultadoEntradasDescodificar uma cadeiaBase64 de volta paradadosResultado
      Descodificar uma cadeia Base64 de volta para dados.

      Descodificar inverte a consulta ao alfabeto, reconstrói o fluxo de bits original e devolve texto ou um ficheiro descarregável. Caracteres de padding = no fim são significativos: marcam quantos bytes havia no grupo final incompleto. Caracteres fora do alfabeto causam um erro claro em vez de uma descodificação parcial silenciosa.

      Espaço em branco é frequentemente ignorado para cadeias copiadas de certificados PEM ou corpos MIME ainda funcionarem. Uma cadeia que parece Base64 mas usa o alfabeto seguro para URL precisa do modo de descodificação seguro para URL, ou hífen e underscore serão rejeitados como ilegais no alfabeto standard.

      Compreender como funciona a codificação Base64

      Process with 3 steps: Enter how Base64 encoding works; Read the main result; Check the breakdown1Enter how Base64encoding works2Read the main result3Check the breakdown
      Compreender como funciona a codificação Base64.

      Base64 processa entrada em blocos de três bytes (24 bits). Esses 24 bits dividem-se em quatro grupos de 6 bits. Cada valor de 6 bits é um índice de 0 a 63 no alfabeto de 64 caracteres. Três bytes de entrada tornam-se portanto quatro caracteres de saída.

      Bytes:  [ byte1 ][ byte2 ][ byte3 ]
      Bits:   aaaaaaaa bbbbbbbb cccccccc
      Grupos: aaaaaa aabbbb bbbbcc cccccc
      Chars:  Char1  Char2  Char3  Char4

      Quando restam menos de três bytes, o codificador ainda emite quatro caracteres mas acrescenta padding para o descodificador saber o comprimento original. O reagrupamento de bits é todo o algoritmo; não há checksum nem chave.

      Codificar a palavra Dog passo a passo

      Process with 3 steps: Enter Encode word Dog step by step; Read the main result; Check the breakdown1Enter Encode word Dogstep by step2Read the main result3Check the breakdown
      Codificar a palavra Dog passo a passo.

      A palavra Dog são três bytes ASCII, por isso preenche um grupo Base64 e codifica sem caracteres de padding. A saída fixa é RG9n. Percorrer os bytes para bits, reagrupar em índices de 6 bits, e ler o alfabeto RFC 4648 mostra porque esses quatro caracteres aparecem e como qualquer bloco de três bytes segue o mesmo caminho.

      1. Escreva os bytes. D = 0x44 = 01000100 o = 0x6F = 01101111 g = 0x67 = 01100111

      2. Concatene 24 bits. 01000100 01101111 01100111

      3. Divida em grupos de 6 bits. 010001 000110 111101 100111

      4. Converta cada grupo num índice decimal. 17, 6, 61, 39

      5. Consulte o alfabeto. Índice 17 = R, 6 = G, 61 = 9, 39 = n

      Resultado: RG9n. Descodificar RG9n devolve os três bytes originais e o texto Dog sob UTF-8 ou ASCII.

      Compreender padding com o sinal de igual

      Concept diagram: Entradas leads to padding com sinal de igual leads to ResultadoEntradaspadding com sinal deigualResultado
      Compreender padding com o sinal de igual.

      Padding aparece quando a contagem de bytes não é múltiplo de três. Um byte sobrante produz dois caracteres do alfabeto e dois sinais =. Dois bytes sobrantes produzem três caracteres e um =. Os exemplos fixos DoRG8= e DogsRG9ncw== mostram ambos os casos de resto ao lado da palavra de três bytes sem padding Dog.

      EntradaBytesCodificadoPadding
      Dog3RG9nnenhum
      Do2RG8=um =
      Dogs4RG9ncw==dois =

      Do são dois bytes: 01000100 01101111. Depois do agrupamento de 6 bits só há bits suficientes para três caracteres significativos (RG8), e um padding = preenche a quarta posição. Dogs são quatro bytes: um grupo completo de três bytes codificando como RG9n, depois um resto de um byte codificando como cw==. Remover padding à mão sem ajustar o comprimento de bits quebra a descodificação; deixe os caracteres = no sítio ao colar.

      Ler o alfabeto Base64

      Concept diagram: Entradas leads to alfabeto Base64 leads to ResultadoEntradasalfabeto Base64Resultado
      Ler o alfabeto Base64.

      A RFC 4648 define 64 caracteres mais a marca de padding =. Índices 0 a 25 são A a Z, 26 a 51 são a a z, 52 a 61 são 0 a 9, índice 62 é +, e índice 63 é /.

      O índice 0 é A, não 0, o que engana quem espera que dígitos liderem o alfabeto.

      Intervalo de índiceCaracteres
      0 a 25A a Z
      26 a 51a a z
      52 a 610 a 9
      62+
      63/
      padding=

      O painel de alfabeto da calculadora lista a mesma tabela que o codificador usa, para um carácter suspeito poder ser verificado contra o conjunto standard. A cadeia completa é ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/.

      Usar a variante Base64 segura para URL

      Concept diagram: Entradas leads to variante Base64 segura para URL leads to ResultadoEntradasvariante Base64 segurapara URLResultado
      Usar a variante Base64 segura para URL.

      O alfabeto seguro para URL (base64url) substitui + por - e / por _. Padding pode ser omitido em alguns protocolos. JSON Web Tokens usam esta variante para segmentos de token poderem ficar em URLs e cabeçalhos HTTP sem percent-encoding dos caracteres mais e barra.

      Cadeias standard e seguras para URL não são intercambiáveis. Descodificar um payload JWT com o alfabeto standard falha em hífens. A ferramenta oferece um modo explícito seguro para URL tanto para codificar como descodificar. Percent-encoding de URL é um problema diferente; use a página Codificar e descodificar URL quando o objectivo for escape RFC 3986 em vez de Base64.

      Contabilizar o aumento de tamanho

      Concept diagram: Entradas leads to Contabilizar o aumento de tamanho leads to ResultadoEntradasContabilizar o aumentode tamanhoResultado
      Contabilizar o aumento de tamanho.

      Cada três bytes tornam-se quatro caracteres, por isso o comprimento codificado é cerca de 4/3 da entrada, um aumento de 33 por cento antes de quebras de linha. Padding pode acrescentar um ou dois caracteres extra no grupo final. URIs de dados e anexos de email sentem este custo depressa: uma imagem de 300 KB torna-se cerca de 400 KB de texto.

      encoded_length ≈ 4 × ceil(byte_length / 3)

      Quebra de linha a 76 caracteres, comum em MIME, acrescenta bytes de newline por cima. Prefira anexos binários ou formatos comprimidos quando o tamanho importa; use Base64 quando o canal genuinamente não pode transportar bytes brutos.

      Escolher uma codificação de caracteres

      Concept diagram: Entradas leads to uma codificação de caracteres leads to ResultadoEntradasuma codificação decaracteresResultado
      Escolher uma codificação de caracteres.

      Base64 codifica bytes, não caracteres abstractos. As mesmas letras produzem bytes diferentes sob UTF-8, UTF-16, Shift JIS ou Big5. Descodificar e depois interpretar com o charset errado produz mojibake mesmo quando a camada Base64 estava perfeita, por isso o charset do modo texto deve corresponder ao produtor na codificação e ao consumidor na descodificação.

      CharsetUso típico
      UTF-8Predefinição para texto moderno e APIs
      Windows-1252Texto europeu ocidental legado
      UTF-16 LE / BEAlguns payloads Windows e Java
      Shift JISTexto japonês antigo
      Big5Texto chinês tradicional antigo

      Para a palavra Dog, ASCII e UTF-8 produzem os mesmos três bytes, por isso RG9n é idêntico. Texto não ASCII diverge. Escolha o charset que corresponde ao produtor antes de codificar, e o mesmo charset depois de descodificar, ou a ida e volta parecerá um bug Base64 quando o erro está a montante.

      Perguntas frequentes

      Base64 é encriptação?

      Não. Base64 é uma codificação que qualquer pessoa pode inverter com o alfabeto público. Não esconde nada. Use um algoritmo criptográfico real quando a confidencialidade é necessária; use Base64 quando um canal precisa de bytes seguros para ASCII.

      Por que a saída Base64 termina com sinais de igual?

      Os caracteres = são padding. Marcam que o grupo final de entrada tinha um ou dois bytes em vez de três. Do codifica para RG8= e Dogs para RG9ncw==. Mantenha o padding ao descodificar a menos que o protocolo documente que foi removido.

      Em que codifica Dog?

      Dog codifica para RG9n sem padding, porque três bytes preenchem um grupo Base64 exactamente. O reagrupamento de bits passo a passo está no exemplo trabalhado nesta página.

      Qual é a diferença entre Base64 standard e seguro para URL?

      Base64 seguro para URL usa - e _ em vez de + e /. JWTs e algumas incorporações de nomes de ficheiro usam o alfabeto seguro para URL. Descodificar com o alfabeto errado falha nesses caracteres substituídos.

      Quanto é Base64 maior que o original?

      Cerca de um terço maior. Três bytes tornam-se quatro caracteres, por isso a razão é 4/3 antes de padding e quebras de linha. Um payload de 3.000 bytes torna-se 4.000 caracteres de Base64.

      Base64 pode codificar um ficheiro, não só texto?

      Sim. O modo ficheiro lê o upload no navegador e codifica os seus bytes brutos. O caminho inverso descodifica para um blob descarregável. Ficheiros grandes aumentam o uso de memória no separador; mantenha uploads modestos.

      Por que o texto descodificado parece errado depois de uma descodificação correcta?

      A camada Base64 restaurou os bytes, mas a codificação de caracteres usada para interpretar esses bytes não corresponde ao produtor. Tente UTF-8 primeiro, depois o charset que o sistema de origem realmente usa.

      Esta ferramenta carrega segredos colados?

      Não. Codificação e descodificação correm localmente. Chaves API, tokens e fragmentos de certificado colados na caixa não são enviados para um servidor. Essa promessa corresponde à regra de desenho para todas as páginas de codificação no Quick Calculators.

      Base64 é o mesmo que codificação de URL?

      Não. Base64 mapeia binário para um alfabeto de 64 caracteres para transporte. Codificação de URL (percent-encoding) escapa caracteres reservados dentro de URIs segundo RFC 3986. Resolvem problemas diferentes e não são substitutos um do outro.

      Que RFC define o alfabeto?

      A RFC 4648 define os alfabetos Base64 standard e seguro para URL e as regras de padding usadas aqui. Documentos mais antigos como a RFC 2045 descrevem Base64 no contexto MIME com mecânica semelhante.

      Resumo

      A Codificação e decodificação Base64 mapeia bytes para o alfabeto RFC 4648 em grupos de 6 bits e inverte o processo localmente no navegador. Dog torna-se RG9n, Do torna-se RG8=, e Dogs torna-se RG9ncw==, ilustrando padding para restos de um e dois bytes.

      O alfabeto seguro para URL troca +// por -/_, a saída cresce cerca de um terço, e a escolha de charset decide que bytes o modo texto alimenta ao codificador. Nada colado é carregado.