C# silverlight中的MD5哈希
我正在开发WindowsPhone7应用程序。我在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
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不再感到愚蠢:)