Files
slgserver/util/crypto.go
2025-11-18 18:08:48 +08:00

72 lines
1.4 KiB
Go

package util
import (
"bytes"
"compress/gzip"
"crypto/md5"
"encoding/binary"
"encoding/hex"
"fmt"
"github.com/go-think/openssl"
"io"
)
func AesCBCEncrypt(src, key, iv []byte, padding string) ([]byte, error) {
data, err := openssl.AesCBCEncrypt(src, key, iv, padding)
if err != nil {
return nil, err
}
return []byte(hex.EncodeToString(data)), nil
}
func AesCBCDecrypt(src, key, iv []byte, padding string) ([]byte, error) {
data, err := hex.DecodeString(string(src))
if err != nil {
return nil, err
}
return openssl.AesCBCDecrypt(data, key, iv, padding)
}
func Md5(text string) string {
hashMd5 := md5.New()
io.WriteString(hashMd5, text)
return fmt.Sprintf("%x", hashMd5.Sum(nil))
}
func Zip(data []byte) ([]byte, error) {
var b bytes.Buffer
gz, _ := gzip.NewWriterLevel(&b, 9)
if _, err := gz.Write([]byte(data)); err != nil {
return nil, err
}
if err := gz.Flush(); err != nil {
return nil, err
}
if err := gz.Close(); err != nil {
return nil, err
}
return b.Bytes(), nil
}
func UnZip(data []byte) ([]byte, error) {
b := new(bytes.Buffer)
binary.Write(b, binary.LittleEndian, data)
r, err := gzip.NewReader(b)
if err != nil {
return nil, err
}
defer r.Close()
unzipData, err := io.ReadAll(r)
if err != nil {
return nil, err
}
return unzipData, nil
}
func Password(pwd string, pwdCode string) string {
return Md5(pwd + pwdCode)
}