c# - C#和golang的MD5不一致

标签 c# cryptography go md5

我正在尝试从 C# 移植算法。我需要的一个步骤是获取字节数组的 md5。我似乎无法在 C# 和 go 实现之间获得一致的哈希值。

在 C# 中我可以这样做:new MD5CryptoServiceProvider().ComputeHash(new byte[] { 5 }))

我得到 [139 182 193 120 56 100 63 150 145 204 106 77 230 197 23 9]

开始:md5.New().Sum([]byte{5})

产量:[5 212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]

我是在做错什么,还是实现实际上不同。我需要能够在 go 端复制 C# 行为。

我有一些 fiddle 可用于 goc#如果你想检查我的整个实现。

最佳答案

您误用了 Sum 函数的输入。 sum 的输入参数用于存储输出,而不是作为 hash 的输入。直接使用 md5.Sum(如您所愿)或写入返回的 Hash 对象,如示例所示:http://golang.org/pkg/crypto/md5/#example_New

关于c# - C#和golang的MD5不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765185/

相关文章:

javascript - Node : "expected Uint8Array" 中的 getRandomValues()

go - 阅读 channel 的不同方式

testing - Go 中测试负面场景的方法

c# - 在 Generic 中实现接口(interface)时,为什么它不是必须实现方法

c# - 创建一个周生成器,显示周号、一周第一天、给定日期一周的最后一天

c# - MS 图表比例 View 和线程

go - Go中的应用程序开发

c# - .NET Framework 中是否有字母枚举类型?

Android中的C#密码编码

algorithm - 当需要对 key 进行变换时, key 如何才能对称?