2 Star 2 Fork 8

王布衣 / gox

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
base64.go 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
package base64
import (
"encoding/base64"
"gitee.com/quant1x/gox/api"
"math/rand"
"slices"
"time"
)
const (
BASE64CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
)
// Base64GetEncoder 生成一个新的base64的码表
func Base64GetEncoder() string {
encoder := slices.Clone(api.String2Bytes(BASE64CHAR))
rand.Seed(time.Now().UnixNano())
rand.Shuffle(len(encoder), func(i, j int) {
encoder[i], encoder[j] = encoder[j], encoder[i]
})
return api.Bytes2String(encoder)
}
func getBase64Encoder(seed int64) string {
encoder := slices.Clone(api.String2Bytes(BASE64CHAR))
rand.Seed(seed)
rand.Shuffle(len(encoder), func(i, j int) {
encoder[i], encoder[j] = encoder[j], encoder[i]
})
return api.Bytes2String(encoder)
}
type PseudoBase64 struct {
base64Chars string
encoding *base64.Encoding
}
func NewBase64(encoder string) PseudoBase64 {
return PseudoBase64{
base64Chars: encoder,
encoding: base64.NewEncoding(encoder),
}
}
func NewPseudoBase64(seed int64) PseudoBase64 {
encoder := getBase64Encoder(seed)
return PseudoBase64{
base64Chars: encoder,
encoding: base64.NewEncoding(encoder),
}
}
func (codec PseudoBase64) Encode(s string) string {
return codec.encoding.EncodeToString(api.String2Bytes(s))
}
func (codec PseudoBase64) Decode(s string) (string, error) {
data, err := codec.encoding.DecodeString(s)
if err != nil {
return "", err
}
return api.Bytes2String(data), nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/quant1x/gox.git
git@gitee.com:quant1x/gox.git
quant1x
gox
gox
v1.21.2

搜索帮助

344bd9b3 5694891 D2dac590 5694891