我试图在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
但是当我尝试通过以下方式获取哈希的’sum’(http://golang.org/pkg/hash/)的字符串时
sumstring := string(sum); // returns 'Ӿ��]앿��N��' or similar
当哈希应该是d3be9e835dec95bfbef34ebe1fbf03da。当我尝试逐字节转换时,我得到的都是废话,只是字符不同。
d3be9e835dec95bfbef34ebe1fbf03da
我该如何获取哈希的字符串?
基本上,您已经获得了二进制数据,但是看起来您正在期待十六进制。看一下转换例程的hex包,尤其是EncodeToString。我不是一个程序员去,但我认为,如果你只是传递sum进入hex.EncodeToString,你会得到你需要的答案。
EncodeToString
sum
hex.EncodeToString