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

标签 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

但是当我尝试通过

sumstring := string(sum);  // returns 'Ӿ��]앿��N��' or similar

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

我要如何获取散列的字符串?

最佳答案

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

关于hash - 如何在 Go 中获取十六进制编码的 md5 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7988543/

相关文章:

c# - Int32.ToString() 太慢

algorithm - 关于哈希中的线性探测

Perl "keys on reference is experimental"警告

java - 哪种哈希算法可以用于重复内容验证?

go - 如何使用golang进行.docx模板(表格内容)

perl - 根据插入顺序迭代哈希?

c++ - 从 libcurl 为 HTTP POST 计算 Content-MD5

go - 动态更新Redis排序集中的元素等级

datetime - Go 的替代日期/时间库

c# - 为什么 FileStream 和字符串的 MD5 哈希不同 C#