Silverlight中的MD5哈希

时间:2010-11-17 15:50:25

标签: c# silverlight windows-phone-7 md5

我正在使用Windows Phone 7应用程序。我正在使用this implementation在Silverlight中进行MD5哈希。

我正在使用此代码 -

    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哈希,你知道我哪里出错吗?

2 个答案:

答案 0 :(得分:11)

您将返回输入的十六进制版本,而不是哈希:

foreach (byte b in bs)

应该是

foreach (byte b in hash)

(另一种方法是使用Convert.ToBase64String(hash),如果你不介意它是在Base64而不是hex。)

答案 1 :(得分:4)

已经有一个已接受的答案,但对于在Silverlight或Windows Phone中使用MD5的其他人,我发布了一个链接到MD5的another implementation,我已经取得了更大的成功。

我花了几个小时用原始帖子提到的实现将我的头撞在墙上,试图让它在我的Windows Phone项目中运行。它在某些情况下工作而在其他情况下不工作。

杰克威尔科克斯的版本运作得很好。