Files
4566704 f04a14d6bb feat(cryptox): 自 go-hua/common 迁入 MD5 摘要工具并独立成包
- 字符串/字节集/文件 MD5,附单元测试、examples/cryptox 例程与包 README
2026-09-20 12:20:50 +08:00

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
}