C# · 12月 29, 2021

c# – 在Silverlight中的MD5哈希

我正在使用 Windows Phone 7应用程序.我正在使用 this implementation的MD5哈希在silverlight.

我正在使用这个代码 –

protected string GetMD5Hash(string input) { byte[] bs = System.Text.Encoding.UTF8.GetBytes(input); MD5Managed md5 = new MD5Managed(); byte[] hash = md5.ComputeHash(bs); StringBuilder sb = new StringBuilder(); foreach (byte b in bs) { sb.Append(b.ToString(“x2”).ToLower()); } return sb.ToString(); }

但是,我没有得到正确的MD5哈希为我提供的输入.我不知道这段代码有什么问题.如果有人在silverlight中使用了this implementation的MD5哈希,你知道我在哪里出错了吗?

解决方法 您正在返回十六进制版本的输入,而不是哈希: foreach (byte b in bs)

应该

foreach (byte b in hash)

(另一种方法是使用Convert.ToBase64String(哈希),如果你不介意它在Base64而不是十六进制.)