golang 计算字符以及文件的 hash 值

学习 golang 一段时间了,逐渐开始编写一些工具使用,最近需要用来计算 hash 值。使用 golang 来计算字符和文件的 hash 值 (md5, sha1, sha256) 比较简单。

计算字符串的 hash 比较简单,直接上代码:

1
2
3
4
5
func md5Str(origin string) string {
m := md5.New()
m.Write([]byte(origin))
return hex.EncodeToString(m.Sum(nil))
}

计算文件的 hash 值稍微麻烦一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func md5File(filepath string) string {
file, err := os.Open(filepath)
if err != nil {
return ""
}
defer file.Close()

m := md5.New()
_, err = io.Copy(m, file)
if err != nil {
return ""
}

return hex.EncodeToString(m.Sum(nil))
}

sha1 和 sha256 的计算方法类似,具体的代码已经提交至 github 上。