搜了一圈答案都一样,
``
fileMd5 := md5.New()
fmt.Println(fileMd5)
io.Copy(fileMd5,file)
MD5Str := hex.EncodeToString(fileMd5.Sum(nil))
``
但是不同的文件出来的md5值是一样的,是我哪里弄错了吗?
搜了一圈答案都一样,
``
fileMd5 := md5.New()
fmt.Println(fileMd5)
io.Copy(fileMd5,file)
MD5Str := hex.EncodeToString(fileMd5.Sum(nil))
``
但是不同的文件出来的md5值是一样的,是我哪里弄错了吗?
我试了一下,代码没问题,我贴一下我运行的代码,你看看是不是你的file变量的问题
func main() {
h := md5.New()
f, err := os.Open("你的文件")
if err != nil {
fmt.Println(err)
return
}
io.Copy(h, f)
fmt.Println(hex.EncodeToString(h.Sum(nil)))
}
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答896 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
首先使用golang给文件hash编码的逻辑是很简单的了,排除代码中变量传值错误的问题,如@iuoui所说的file变量错误,那另外有个可能就是你读取的文件是重复文件,如下:
贴一下编码的逻辑代码:
以及我读取的两个文件内容:

main方法如此调用看看hash值:
文件不重复的结果:

文件内容都改成 we are test file! 看看:
