Funções de Codificação e Decodificação Base64

Base64 refere-se a uma codificação de conteúdo de conteúdo MIME específica. A codificação Base64 representa sequências arbitrárias de octetos em um formato que exige distinção entre maiúsculas e minúsculas, mas que não precisa ser humanamente legível.

Um subconjunto de 65 caracteres de US-ASCII é usado, permitindo que 6 bits sejam representados por caractere para impressão. O 65º caractere, "=", é usado para indicar uma função de processamento especial.

O processo de codificação representa grupos de 24 bits de bits de entrada como cadeias de saída de 4 caracteres codificados. Começando da esquerda para a direita, um grupo de entrada de 24 bits é formado pela concatenação de 3 grupos de entrada de 8 bits. Esses 24 bits são tratados como 4 grupos de 6 bits concatenados, sendo que cada um deles é convertido em um único dígito no alfabeto base 64.

Cada grupo de 6 bits é usado como um índice para uma matriz de 64 caracteres imprimíveis. O caractere referenciado pelo índice é colocado na cadeia de saída.

Alfabeto Base64

Codif. de Valor Codif. de Valor Codif. de Valor Codif. de Valor
          0 A            17 R            34 i            51 z
          1 B            18 S            35 j            52 0
          2 C            19 T            36 k            53 1
          3 D            20 U            37 l            54 2
          4 E            21 V            38 m            55 3
          5 F            22 W            39 n            56 4
          6 G            23 X            40 o            57 5
          7 H            24 Y            41 p            58 6
          8 I            25 Z            42 q            59 7
          9 J            26 a            43 r            60 8
         10 K            27 b            44 s            61 9
         11 L            28 c            45 t            62 +
         12 M            29 d            46 u            63 /
         13 N            30 e            47 v
         14 O            31 f            48 w         (preencher) =
         15 P            32 g            49 x
         16 Q            33 h            50 y
Um processamento especial será executado se menos que 24 bits estiver disponível no final dos dados sendo codificados. Um quantum de codificação completa é sempre concluído no final de uma quantidade. Quando menos que 24 bits de entrada estão disponíveis em um grupo de entrada, zero bits são incluídos (à direita) para formar um número integral de grupos de 6 bits. O preenchimento no final dos dados é executado usando o caractere '='. Como toda entrada de base 64 é um número integral de octetos, apenas os seguintes casos podem surgir:
  • O quantum final de entrada de codificação é um múltiplo integral de 24 bits; aqui, a unidade final de saída codificada será um múltiplo integral de 4 caracteres sem preenchimento "=",
  • O quantum final de entrada de codificação é exatamente 8 bits; aqui, a unidade final de saída codificada será dois caracteres, seguidos por dois caracteres de preenchimento "=".
  • O quantum final de entrada de codificação é exatamente 16 bits; aqui, a unidade final de saída codificada será três caracteres, seguidos por um caractere de preenchimento "=".