簡體   English   中英

C#和golang之間的MD5不一致

[英]MD5 Inconsistent between C# and golang

我正在嘗試從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]

我是在做一些奇怪的事情,還是實現方式實際上有所不同。 我需要能夠在旅途中復制C#行為。

我有一些可用的小提琴C#的 ,如果你想檢查我的整個實現。

您正在濫用Sum函數的輸入。 sum的輸入參數用於存儲輸出,而不是哈希的輸入。 直接使用md5.Sum (按您的要求運行)或寫入返回的Hash對象,如示例所示: http : //golang.org/pkg/crypto/md5/#example_New

它應該是

fmt.Println(md5.Sum([]byte{5}))

對於您對Evan的評論中的第二個問題:

hash.Hash實現io.Writer 因此,您可以隨時執行以下操作:

h := md5.New()
h.Write([]byte{5})

看看hash.Hash界面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM