如何在Go中获取十六进制编码的md5哈希

时间:2011-11-02 23:23:42

标签: hash md5 go

我正试图在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时。当我尝试逐字节转换时,我得到了同样的废话,只有不同的字符。

我的意思是如何获取哈希的字符串?

2 个答案:

答案 0 :(得分:13)

基本上,你有二进制数据,但看起来你正在期待十六进制。查看转换例程的hex包,尤其是EncodeToString。我不是Go程序员,但我想如果你只是将sum传递给hex.EncodeToString,你就会得到你期望的答案。

答案 1 :(得分:5)

或者,您可以使用fmt.Sprintf("%x", sum)

轻松获取字符串或字节切片的十六进制表示形式