有一种方法可以将字符串编码为 Base64 或从中解码为 Base64,而无需在末尾进行填充?我的意思是“==”结尾。
我正在使用 base64.URLEncoding.EncodeToString
进行编码,它工作得很好,但我没有看到决定不在末尾使用填充的方法(就像在 java 上一样)。
最佳答案
Go1.5 会有一个 WithPadding
Encoding
选项。
这还将添加 2 个预定义编码,RawStdEncoding
, and RawURLEncoding
, 没有填充。
尽管由于您使用的是应用程序引擎,并且暂时无法访问 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
}
关于google-app-engine - 在 golang ( appengine ) 上无填充的 Base64 编码/解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31971614/