Files
apinto/utils/encode.go
2023-12-24 22:02:55 +08:00

49 lines
1.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package utils
import (
"encoding/base64"
"net/url"
"strings"
)
// B64Decode base64解密
func B64DecodeString(input string) (string, error) {
data, err := B64Decode(input)
if err != nil {
return "", err
}
return string(data), err
}
func B64Decode(input string) ([]byte, error) {
remainder := len(input) % 4
// base64编码需要为4的倍数如果不是4的倍数则填充"="号
if remainder > 0 {
padlen := 4 - remainder
input = input + strings.Repeat("=", padlen)
}
// 将原字符串中的"_","-"分别用"/"和"+"替换
input = strings.Replace(strings.Replace(input, "_", "/", -1), "-", "+", -1)
result, err := base64.StdEncoding.DecodeString(input)
return result, err
}
// B64Encode base64加密
func B64Encode(input []byte) string {
//result := base64.StdEncoding.EncodeToString([]byte(input))
//base64.RawStdEncoding.EncodeToString([]byte(input))
//result = strings.Replace(strings.Replace(strings.Replace(result, "=", "", -1), "/", "_", -1), "+", "-", -1)
return base64.StdEncoding.EncodeToString(input)
}
// QueryUrlEncode 对query进行url encode
func QueryUrlEncode(rawQuery string) string {
queryList := strings.Split(rawQuery, "&")
for i, query := range queryList {
idx := strings.Index(query, "=")
if idx != -1 {
queryList[i] = query[:idx] + "=" + url.QueryEscape(query[idx+1:])
}
}
return strings.Join(queryList, "&")
}