Golang获取普通字符串和大文件的MD5
编辑于 2022-10-15 00:01:28 阅读 961
先看一下md5的两种用法
hash := md5.New()
b := []byte("test")
hash.Write(b)
fmt.Printf("%x %x\n", hash.Sum(nil), md5.Sum(b))
普通字符串的md5
func Md5(str string) string {
data := []byte(str)
return fmt.Sprintf("%x", md5.Sum(data))
}
小文件的md5(不推荐)
func Md5File(file string) string {
cf, _ := os.Open(file)
defer cf.Close()
body, _ := io.ReadAll(cf)
return fmt.Sprintf("%x", md5.Sum(body))
}
文件的md5(支持大文件)
func Md5File(file string) string {
f, _ := os.Open(file)
defer f.Close()
md5hash := md5.New()
if _, err := io.Copy(md5hash, f); err != nil {
panic(err.Error())
}
return fmt.Sprintf("%x", md5hash.Sum(nil))
}