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 Base64URLEncoding
- 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 Base64DecodeString
- 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
.