2 Star 2 Fork 8

王布衣/gox

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
base64.go 1.44 KB
Copy Edit Raw Blame History
王布衣 authored 2 years ago . 增加base64算法
package base64
import (
"encoding/base64"
"gitee.com/quant1x/gox/api"
"golang.org/x/exp/slices"
"math/rand"
"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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/quant1x/gox.git
git@gitee.com:quant1x/gox.git
quant1x
gox
gox
v1.9.5

Search