golang的base64url 有一个小坑。
base64.URLEncoding.EncodeToString 和 base64.URLEncoding.DecodeString 末尾会带 = 符号,和其他语言的定义不一样
换成 base64.RawURLEncoding.EncodeToString 和 base64.RawURLEncoding.DecodeString 即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| package main
import "encoding/base64"
func main() {
var strToBase64UrlTest = "161&q=aes+发生的&cvid=对付对方&gs"
base64urlStr := base64.URLEncoding.EncodeToString([]byte(strToBase64UrlTest))
println(base64urlStr)
getStr, err := base64.URLEncoding.DecodeString(base64urlStr)
if err != nil {
panic(err)
}
println(string(getStr))
}
|
应该修改为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| package main
import "encoding/base64"
func main() {
var strToBase64UrlTest = "161&q=aes+发生的&cvid=对付对方&gs"
base64urlStr := base64.RawURLEncoding.EncodeToString([]byte(strToBase64UrlTest))
println(base64urlStr)
getStr, err := base64.RawURLEncoding.DecodeString(base64urlStr)
if err != nil {
panic(err)
}
println(string(getStr))
}
|