Skip to main content

Como funciona a codificação Base64

➤ Cómo PROGRAMAR un CONTROL REMOTO (( FÁCIL )) universal SIN CÓDIGO✔ (Abril 2025)

➤ Cómo PROGRAMAR un CONTROL REMOTO (( FÁCIL )) universal SIN CÓDIGO✔ (Abril 2025)
Anonim

Se a internet é a rodovia da informação, então o caminho para o e-mail é uma ravina estreita. Somente carrinhos muito pequenos podem passar.

O sistema de transporte de email é projetado apenas para texto ASCII simples. Tentar enviar texto em outros idiomas ou arquivos arbitrários é como pegar um caminhão pela ravina.

Como o caminhão grande atravessa o desfiladeiro?

Então, como você envia um caminhão grande através de uma pequena ravina? Você tem que desmontá-lo em uma extremidade, transportar as peças através da ravina e reconstruir o caminhão a partir das peças na outra extremidade.

O mesmo acontece quando você envia um anexo de arquivo por email. Em um processo conhecido como codificação, os dados binários são transformados em texto ASCII, que pode ser transportado em email sem problemas. No final do destinatário, os dados são decodificados e o arquivo original é recriado.

Um método de codificar dados arbitrários como texto ASCII simples é o Base64. É uma das técnicas empregadas pelo padrão MIME para enviar dados que não sejam texto simples.

Base64 ao salvamento

A codificação Base64 usa três bytes, cada um com oito bits, e os representa como quatro caracteres imprimíveis no padrão ASCII. Isso é feito essencialmente em duas etapas.

O primeiro passo é converter três bytes em quatro números de seis bits. Cada caractere no padrão ASCII consiste em sete bits. O Base64 usa apenas 6 bits (correspondendo a 2 ^ 6 = 64 caracteres) para garantir que os dados codificados sejam imprimíveis e legíveis. Nenhum dos caracteres especiais disponíveis em ASCII é usado.

Os 64 caracteres (daí o nome Base64) são 10 dígitos, 26 caracteres minúsculos, 26 caracteres maiúsculos, bem como '+' e '/'.

Se, por exemplo, os três bytes são 155, 162 e 233, o fluxo de bits correspondente (e assustador) é 100110111010001011101001, que por sua vez corresponde aos valores de 6 bits 38, 58, 11 e 41.

Esses números são convertidos em caracteres ASCII na segunda etapa usando a tabela de codificação Base64. Os valores de 6 bits do nosso exemplo traduzem para a sequência ASCII "m6Lp".

  • 155 -> 10011011
  • 162 -> 10100010
  • 233 -> 11101001
  • 100110 -> 38
  • 111010 -> 58
  • 001011 -> 11
  • 101001 -> 41
  • 38 -> m
  • 58 -> 6
  • 11 -> L
  • 41 -> p

Esse processo de duas etapas é aplicado a toda a seqüência de bytes codificados. Para garantir que os dados codificados possam ser impressos adequadamente e não excedam o limite de comprimento de linha de qualquer servidor de correio, os caracteres de nova linha são inseridos para manter os comprimentos de linha abaixo de 76 caracteres. Os caracteres de nova linha são codificados como todos os outros dados.

Resolvendo o Fim do Jogo

No final do processo de codificação, podemos encontrar um problema. Se o tamanho dos dados originais em bytes for um múltiplo de três, tudo funciona bem. Se não for, podemos acabar com um ou dois bytes de 8 bits. Para uma codificação adequada, precisamos exatamente de três bytes.

A solução é acrescentar bytes suficientes com um valor de '0' para criar um grupo de 3 bytes. Dois desses valores são acrescentados se tivermos um byte extra de dados, um é anexado para dois bytes extras.

Naturalmente, esses '0's' não podem ser codificados usando a tabela de codificação abaixo. Eles devem ser representados por um 65º caractere.

O caractere de preenchimento Base64 é '='. Naturalmente, só pode aparecer no final dos dados codificados.

Tabela de codificação Base64

ValorCaracteres ValorCaracteres ValorCaracteres ValorCaracteres
0UMA 16Q 32g 48W
1B 17R 33h 49x
2C 18S 34Eu 50y
3D 19T 35j 51z
4E 20você 36k 520
5F 21V 37eu 531
6G 22W 38m 542
7H 23X 39n 553
8Eu 24Y 40o 564
9J 25Z 41p 575
10K 26uma 42q 586
11eu 27b 43r 597
12M 28c 44s 608
13N 29d 45t 619
14O 30e 46você 62+
15P 31f 47v 63/