我正在尝试在 Go 中获取文件的 md5 哈希值,如下所示:
running_hash := md5.New(); // type hash.Hash
running_hash.Write(data); // data is []byte
sum := running_hash.Sum(); // []uint8 according to the compiler
但是当我尝试通过
sumstring := string(sum); // returns 'Ӿ��]앿��N��' or similar
当哈希应该是 d3be9e835dec95bfbef34ebe1fbf03da
时。当我尝试逐字节转换时,我得到了同样的废话,只是字符不同。
我要如何获取散列的字符串?
最佳答案
基本上,您已经获得了二进制数据,但看起来您期待的是十六进制数据。看看 hex转换例程包,尤其是 EncodeToString
.我不是 Go 程序员,但我认为如果你只是将 sum
传递给 hex.EncodeToString
,你会得到你期望的答案。
关于hash - 如何在 Go 中获取十六进制编码的 md5 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7988543/