// 提供MD5散列算法的函数。 package md5 import ( "crypto/md5" "encoding/hex" "io" "os" ) // 计算给定字节数组的MD5校验和,返回字节数组。 func MD5(data []byte) []byte { hasher := md5.New() hasher.Write(data) return hasher.Sum(nil) } // 计算给定字节数组的MD5校验和,返回十六进制字符串。 func MD5Hex(data []byte) string { return hex.EncodeToString(MD5(data)) } // 计算一个指定文件的MD5校验和,返回字节数组。 func SumFile(file string) ([]byte, error) { f, err := os.Open(file) if err != nil { return nil, err } defer f.Close() hasher := md5.New() if _, err := io.Copy(hasher, f); err != nil { return nil, err } return hasher.Sum(nil), nil } // 计算一个指定文件的MD5校验和,返回十六进制字符串。 func SumFileHex(file string) (string, error) { hash, err := SumFile(file) if err != nil { return "", err } return hex.EncodeToString(hash), nil }