2011-11-02 140 views
3

我试图让围棋文件的MD5哈希值,像这样:如何获得十六进制编码的MD5哈希围棋

running_hash := md5.New(); // type hash.Hash 
running_hash.Write(data); // data is []byte 
sum := running_hash.Sum(); // []uint8 according to the compiler 

但是,当我试图让哈希的'串总和”(http://golang.org/pkg/hash/),经由

当哈希应该是d3be9e835dec95bfbef34ebe1fbf03da。当我尝试逐字节地转换时,我得到了同样的废话,只有不同的字符。

我是怎么想得到散列的字符串?

+1

你想哈希的'基16'表示的字符串或字节片的十六进制表示, – Blender

+2

请记住:散列函数的输出是一个二进制值。您习惯看到的十六进制表示只是一个约定。 –

回答

13

基本上,你已经得到了二进制数据,但它看起来像你期待十六进制。查看转换例程的hex包,特别是EncodeToString。我不是一个Go程序员,但我认为如果您只是将sum传入hex.EncodeToString,您会得到您期望的答案。

5

交替,你可以很容易地使用fmt.Sprintf("%x", sum)

+0

IMO应该是首选的解决方案。 – Dale