Go by Example: Base64 Encoding

Go ofrece soporte integrado para la codificación/descodificación base64.

package main

Esta sintaxis importa el paquete encoding/base64 con el nombre b64 en lugar del predeterminado base64. Nos ahorrará algo de espacio a continuación.

import (
    b64 "encoding/base64"
    "fmt"
)
func main() {

Aquí está la cadena que codificaremos/descodificaremos.

    data := "abc123!?$*&()'-=@~"

Go soporta tanto el base64 estándar como el compatible con URL. Aquí te mostramos cómo codificar usando el codificador estándar. El codificador requiere un []byte, así que convertimos nuestra cadena a ese tipo.

    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)

La decodificación puede devolver un error, lo cual puedes verificar si no sabes ya que la entrada es bien formada.

    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()

Esto codifica/descodifica usando un formato base64 compatible con URL.

    uEnc := b64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
}

La cadena se codifica en valores ligeramente diferentes con los codificadores base64 estándar y de URL (trailing + vs -) pero ambos decodifican a la cadena original como se desea.

$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

Siguiente ejemplo: Reading Files.