package md5x import ( "crypto/md5" "encoding/hex" "io" "os" ) // 字符串的md5 func Md5String(value string) string { return Md5Byte([]byte(value)) } func Md5Byte(b []byte) string { m := md5.New() m.Write(b) return hex.EncodeToString(m.Sum(nil)) } // 文件的md5 func Md5File(path string) (string, error) { file, err := os.Open(path) if err != nil { return "", err } defer file.Close() return Md5Stream(file) } // 流式的md5 func Md5Stream(reader io.Reader) (string, error) { hash := md5.New() _, err := io.Copy(hash, reader) if err != nil { return "", err } return hex.EncodeToString(hash.Sum(nil)), nil }