在 golang ( appengine ) 上没有填充的 Base64 编码/解码

有没有一种方法可以将字符串编码/解码为 Base64 或从 Base64 编码/解码字符串而无需在末尾填充?我的意思是“==”结尾。

我正在使用base64.URLEncoding.EncodeToString编码并且它完美地工作,但我没有看到决定在最后不使用填充的方法(就像在 java 上一样)。


幕布斯7119047
浏览 197回答 2
2回答

斯蒂芬大帝

Go1.5 将有一个WithPadding选项Encoding。这还将添加 2 个预定义的编码RawStdEncoding, 和RawURLEncoding,它们将没有填充。虽然由于您使用的是 app-engine,并且暂时无法访问 Go1.5,但您可以创建一些辅助函数来根据需要添加和删除填充。这是一个编码和解码字符串的示例。如果您需要,它可以很容易地适应以更有效地使用[]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}

慕哥9229398

简单地,使用base64.RawStdEncoding.EncodeToString代替base64.StdEncoding.EncodeToString要不然使用base64.RawURLEncoding.EncodeToString代替base64.URLEncoding.EncodeToString.// 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.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go