2011-11-02 46 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