首次提交
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package encode
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
const (
|
||||
standardBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
||||
customBase64 = "KLMPQRSTUVWXYZABCGHdefIJjkNOlmnopqrstuvwxyzabcghiDEF34501289+67/"
|
||||
)
|
||||
|
||||
var base64Map = func() map[byte]byte {
|
||||
m := make(map[byte]byte, len(standardBase64))
|
||||
for i := 0; i < len(standardBase64); i++ {
|
||||
m[standardBase64[i]] = customBase64[i]
|
||||
}
|
||||
return m
|
||||
}()
|
||||
|
||||
// CustomBase64Encode 使用自定义字符映射对标准 Base64 进行转换
|
||||
func CustomBase64Encode(data []byte) string {
|
||||
standard := base64.StdEncoding.EncodeToString(data)
|
||||
result := make([]byte, len(standard))
|
||||
for i := 0; i < len(standard); i++ {
|
||||
if c, ok := base64Map[standard[i]]; ok {
|
||||
result[i] = c
|
||||
} else {
|
||||
result[i] = standard[i]
|
||||
}
|
||||
}
|
||||
return string(result)
|
||||
}
|
||||
|
||||
// EncodeJSON 将任意数据编码为 JSON 后,再进行自定义 Base64 编码
|
||||
func EncodeJSON(v any) (string, error) {
|
||||
jsonBytes, err := json.Marshal(v)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return CustomBase64Encode(jsonBytes), nil
|
||||
}
|
||||
|
||||
// ParseBase64Param 解析 base64Resp 参数,默认为 true
|
||||
func ParseBase64Param(c interface{ Query(string) string }) bool {
|
||||
v := c.Query("base64Resp")
|
||||
if v == "" || v == "true" || v == "1" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user