Funzioni di codifica e decodifica Base64

Base64 si riferisce ad una specifica codifica per il trasferimento di contenuto MIME. La codifica Base64 rappresenta sequenze arbitrarie di ottetti in un formato che richiede il rispetto delle lettere maiuscole e minuscole ma non deve necessariamente essere leggibile.

Viene utilizzato un sottoinsieme composto da 65 caratteri US-ASCII, che consente la rappresentazione di 6 bit per carattere stampabile. Il 65° carattere, "=", viene utilizzato per indicare una speciale funzione di elaborazione.

Il processo di codifica rappresenta gruppi di 24 bit di bit di input come stringhe di output di 4 caratteri codificati. Andando da sinistra a destra, un gruppo di input di 24 bit viene formato concatenando 3 gruppi di input da 8 bit. Questi 24 bit vengono, quindi, considerati come 4 gruppi da 6 bit concatenati, ognuno dei quali viene convertito in una singola cifre nell'alfabeto base 64.

Ogni gruppo da 6 bit viene utilizzato come indice in una matrice di 64 caratteri stampabili. Il carattere a cui l'indice fa riferimento viene inserito nella stringa di output.

Alfabeto Base64

Codifica valore  Codifica valore  Codifica valore  Codifica valore
          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         (riempimento) =
         15 P            32 g            49 x
         16 Q            33 h            50 y
Viene eseguita un'elaborazione speciale se sono disponibili meno di 24 bit alla fine dei dati che si stanno codificando. Un quantum completo di codifica viene sempre completato alla fine di una quantità. Quando sono disponibili meno di 24 bit di input in un gruppo di input, vengono aggiunti dei bit zero (sulla destra) per formare un numero integrale di gruppi da 6 bit. Il riempimento alla fine dei dati viene ottenuto utilizzando il carattere '='. Poiché tutto l'input base 64 costituisce un numero integrale di ottetti, si possono verificare solo i seguenti casi:
  • Il quantum finale di input di codifica è un multiplo integrale di 24 bit; in questo esempio, l'unità finale di output codificato sarà costituita da un multiplo integrale di 4 caratteri senza riempimento tramite "=",
  • Il quantum finale di input di codifica corrisponde esattamente a 8 bit; in questo esempio, l'unità finale di output codificato sarà costituita da due caratteri seguiti da due caratteri di riempimento "=".
  • Il quantum finale di input di codifica corrisponde esattamente a 16 bit; in questo esempio, l'unità finale di output codificato sarà costituita da tre caratteri seguiti da un carattere di riempimento "=".