alist/pkg/utils/hash.go

50 lines
844 B
Go
Raw Normal View History

2022-08-31 12:46:19 +00:00
package utils
import (
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
2022-09-18 12:17:24 +00:00
"encoding/base64"
2022-08-31 12:46:19 +00:00
"encoding/hex"
2022-09-18 12:17:24 +00:00
"strings"
2022-08-31 12:46:19 +00:00
)
2023-07-15 08:28:55 +00:00
func GetSHA1Encode(data []byte) string {
2022-08-31 12:46:19 +00:00
h := sha1.New()
2023-07-15 08:28:55 +00:00
h.Write(data)
2022-08-31 12:46:19 +00:00
return hex.EncodeToString(h.Sum(nil))
}
2023-07-15 08:28:55 +00:00
func GetSHA256Encode(data []byte) string {
h := sha256.New()
2023-07-15 08:28:55 +00:00
h.Write(data)
return hex.EncodeToString(h.Sum(nil))
}
2023-07-15 08:28:55 +00:00
func GetMD5Encode(data []byte) string {
2022-08-31 12:46:19 +00:00
h := md5.New()
2023-07-15 08:28:55 +00:00
h.Write(data)
2022-08-31 12:46:19 +00:00
return hex.EncodeToString(h.Sum(nil))
}
2022-09-18 12:17:24 +00:00
2023-07-15 08:28:55 +00:00
func GetMD5EncodeStr(data string) string {
return GetMD5Encode([]byte(data))
}
2022-09-18 12:17:24 +00:00
var DEC = map[string]string{
"-": "+",
"_": "/",
".": "=",
}
func SafeAtob(data string) (string, error) {
for k, v := range DEC {
data = strings.ReplaceAll(data, k, v)
}
bytes, err := base64.StdEncoding.DecodeString(data)
if err != nil {
return "", err
}
return string(bytes), err
}