44 lines
992 B
Go
44 lines
992 B
Go
// Package cryptox 摘要工具:字符串/字节集/文件的 MD5(返回 32 位十六进制小写)。
|
|
package cryptox
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"os"
|
|
)
|
|
|
|
// GetMd5ByStr 计算字符串的 MD5(返回 32 位十六进制小写)
|
|
func GetMd5ByStr(str string) (string, error) {
|
|
h := md5.New()
|
|
_, err := h.Write([]byte(str))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
s := hex.EncodeToString(h.Sum(nil))
|
|
return s, nil
|
|
}
|
|
|
|
// GetMd5ByBytes 计算字节集的 MD5(返回 32 位十六进制小写)
|
|
func GetMd5ByBytes(data []byte) (string, error) {
|
|
h := md5.New()
|
|
_, err := h.Write(data)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
s := hex.EncodeToString(h.Sum(nil))
|
|
return s, nil
|
|
}
|
|
|
|
// GetFileMd5 计算文件的 MD5(流式读取,返回 32 位十六进制小写)
|
|
func GetFileMd5(savePath string) (string, error) {
|
|
buf, err := os.ReadFile(savePath)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
str, err := GetMd5ByBytes(buf)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return str, nil
|
|
}
|