Codifica Base64

L'algoritmo di trascodifica Base64 permette di esprimere sequenze di byte con codifica a 8 bitper byte in una sequenza stampabile a 7 bit per byte. E' usatissimo in tanti servizi internet, per esempio per gli allegati di posta elettronica.
E' chiamato anche trascodifica MIME.

Per la gestione si usano due encoder in alternativa:

  • StdEncoding - encoder standard senza ulteriore trattamento delle stringhe Base64
  • URLEncoding - che gestisce inoltre l'uso di caratteri speciali (tipo %nn) nelle stringhe URL

Ciascuno dei due encoder ha le funzioni:

  • EncodeToString - per la codifica da slice di byte 8 bit/char a stringa Base64
  • DecodeString - per la decodifica da stringa Base64 a slice di byte 8 bit/char

(550base64-encoding.go):

package main

// Uno dei tanti package di codifica, con alias
import b64 "encoding/base64"
import "fmt"

func main() {

	// Stringa di prova
	data := "abc123!?$*&()'-=@~"
	// L'argomento deve essere un array di byte
	// Codifica con lo encoder standard
	sEnc := b64.StdEncoding.EncodeToString([]byte(data))
	fmt.Println(sEnc)
	// Decodifica ritorna un array di byte e un errore
	sDec, _ := b64.StdEncoding.DecodeString(sEnc)
	// Stampa come stringa
	fmt.Println(string(sDec))
	fmt.Println()
	// Encode compatibile con URL, ritorna stringa
	uEnc := b64.URLEncoding.EncodeToString([]byte(data))
	fmt.Println(uEnc)
	// Decoder URL, ritorna stringa ed errore
	uDec, _ := b64.URLEncoding.DecodeString(uEnc)
	fmt.Println(string(uDec))
}

Molti altri metodi di codifica sono supportati da encode.