一尘不染

如何在Go中获取十六进制编码的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。当我尝试逐字节转换时,我得到的都是废话,只是字符不同。

我该如何获取哈希的字符串?


阅读 374

收藏
2020-07-02

共1个答案

一尘不染

基本上,您已经获得了二进制数据,但是看起来您正在期待十六进制。看一下转换例程的hex包,尤其是EncodeToString。我不是一个程序员去,但我认为,如果你只是传递sum进入hex.EncodeToString,你会得到你需要的答案。

2020-07-02