Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# silverlight中的MD5哈希_C#_Silverlight_Windows Phone 7_Md5 - Fatal编程技术网

C# silverlight中的MD5哈希

C# silverlight中的MD5哈希,c#,silverlight,windows-phone-7,md5,C#,Silverlight,Windows Phone 7,Md5,我正在开发WindowsPhone7应用程序。我在silverlight中使用MD5哈希 我正在使用此代码- protected string GetMD5Hash(string input) { byte[] bs = System.Text.Encoding.UTF8.GetBytes(input); MD5Managed md5 = new MD5Managed(); byte[] hash = md5.ComputeHash

我正在开发WindowsPhone7应用程序。我在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哈希,您知道我哪里出错了吗?

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

foreach (byte b in bs)
应该是

foreach (byte b in hash)

(另一种选择是使用
Convert.ToBase64String(hash)
,如果您不介意它使用Base64而不是十六进制的话。)

对此已经有了一个公认的答案,但是对于在Silverlight或Windows Phone中使用MD5的其他人,我正在发布一个指向MD5的链接,我在这方面取得了更大的成功

我花了几个小时的时间,在我的WindowsPhone项目中,用原始帖子中提到的实现来敲打我的头。它在某些情况下有效,而在其他情况下无效


杰夫·威尔科克斯(Jeff Wilcox)的版本运行得非常好。

值得注意的是,MD5现在很可能被认为已经过时了——它不安全。我建议使用SHA家族的实现。为什么你认为它是错误的?你拿它和什么比较?你链接到的页面上有评论说它有缺陷,不应该有缺陷used@Mr.失望我正在使用第三方API,所以这真的不是由我来决定的。@Matt Lacey是的,我看到了这些评论。但是,当我寻找替代方案时,除了自己从头开始做之外,我没有找到其他任何东西。许多线程,甚至在stackoverflow中,都建议使用这种实现。我怎么知道它错了?通常,MD5哈希值表示为32个十六进制数字的序列,但对于某些输入,我得到了更多。我在Windows Phone 7应用程序上找不到管理的MD5。@Pavanred好吧,你可以让Rubber ducky不再感到愚蠢:)