[英]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#行為。
您正在濫用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})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.