// 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 }