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

参考

https://www.codenong.com/js46d9c04c4ff4/

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验