Saltar al contenido

Codificar / decodificar Base64 sin relleno en golang (appengine)

Solución:

Go1.5 tendrá un WithPadding opción en Encoding.

Esto también agregará 2 codificaciones predefinidas, RawStdEncoding, y RawURLEncoding, que no tendrá relleno.

Sin embargo, dado que está en el motor de la aplicación y no tendrá acceso a Go1.5 por un tiempo, puede hacer alguna función auxiliar para agregar y eliminar el relleno según sea necesario.

Aquí hay un ejemplo para codificar y decodificar cadenas. Si lo necesita, podría adaptarse fácilmente para que funcione de manera más eficiente utilizando []byte.

func base64EncodeStripped(s string) string {
    encoded := base64.StdEncoding.EncodeToString([]byte(s))
    return strings.TrimRight(encoded, "=")
}

func base64DecodeStripped(s string) (string, error) {
    if i := len(s) % 4; i != 0 {
        s += strings.Repeat("=", 4-i)
    }
    decoded, err := base64.StdEncoding.DecodeString(s)
    return string(decoded), err
}

Simplemente,

usar base64.RawStdEncoding.EncodeToString en lugar de base64.StdEncoding.EncodeToString

Si no

usar base64.RawURLEncoding.EncodeToString en lugar de base64.URLEncoding.EncodeToString.

Referencia: consulte los comentarios del código fuente, línea 94 a 110:

// RawURLEncoding is the unpadded alternate base64 encoding defined in RFC 4648.
// It is typically used in URLs and file names.
// This is the same as URLEncoding but omits padding characters.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *