代码之家  ›  专栏  ›  技术社区  ›  pavanred

Silverlight中的MD5哈希

  •  10
  • pavanred  · 技术社区  · 14 年前

    我正在开发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中的MD5哈希,您知道我哪里出错了吗?

    2 回复  |  直到 14 年前
        1
  •  11
  •   Jon Skeet    14 年前

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

    foreach (byte b in bs)
    

    应该是

    foreach (byte b in hash)
    

    (另一种选择是使用 Convert.ToBase64String(hash) 如果你不介意它是在base64而不是十六进制。)

        2
  •  4
  •   Josh Earl    13 年前

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

    我花了几个小时的时间用最初的帖子中提到的实现敲打墙壁,试图让它在我的Windows Phone项目中工作。它在某些情况下起作用,而在其他情况下不起作用。

    杰夫·威尔科克斯的版本工作得很好。