Funciones de codificación y descodificación Base64

Base64 hace referencia a una codificación de transferencia de contenido MIME específica. La codificación Base64 representa secuencias arbitrarias de octetos en un formato que requiere coincidencias de mayúsculas y minúsculas en la búsqueda pero debe poder ser leída por un humano.

Se utiliza un subconjunto de 65 caracteres de ASCII de EE.UU., que permite que se representen 6 bits por carácter imprimible. El carácter número 65, "=", se utiliza para señalar una función de proceso especial.

El proceso de codificación representa grupos de 24 bits de bits de entrada como series de salida de 4 caracteres codificados. Partiendo de izquierda a derecha, un grupo de entrada de 24 bits está formado por la concatenación de tres grupos de entrada de 8 bits. A continuación, estos 24 bits se tratan como 4 grupos de 6 bits concatenados, siendo cada uno de los cuales convertido en un único dígito en el alfabeto Base64.

Cada grupo de 6 bits se utiliza como índice en una matriz de 64 caracteres imprimibles. El carácter referenciado por el índice se coloca en la serie de salida.

Alfabeto Base64

Value Encoding  Value Encoding  Value Encoding  Value Encoding
          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         (pad) =
         15 P            32 g            49 x
         16 Q            33 h            50 y
El procesamiento especial se realiza si hay menos de 24 bits disponibles al final de los datos que se están codificando. Una cantidad de codificación entera siempre se completa al final de una cantidad. Cuando hay menos de 24 bits de entrada disponibles en un grupo de entrada, se añaden 0 bits (a la derecha) para formar un número entero de grupos de 6 bits. El relleno al final de los datos se realiza utilizando el carácter '='. Puesto que toda entrada de Base64 es un número entero de octetos, sólo se pueden generar los siguientes casos:
  • La cantidad final de entrada de codificación es un múltiplo entero de 24 bits, aquí, la unidad final de salida codificada será un entero múltiplo de 4 caracteres sin relleno "=",
  • La cantidad final de entrada de codificación es exactamente de 8 bits, aquí, la unidad final de salida codificada será de dos caracteres seguidos por dos caracteres de relleno "=".
  • La cantidad final de entrada de codificación es exactamente de 16 bits, aquí, la unidad final de salida codificada será de tres caracteres seguidos por un carácter de relleno "=".