MD5 хэш в silverlight
Я работаю над приложением Windows Phone 7. Я использую эту реализацию для хеширования 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 для ввода, который я предоставляю. Я не уверен, что не так с этим кодом. Если кто-то использовал эту реализацию для хеширования MD5 в silverlight, знаете ли вы, где я ошибся?
Ответы
Ответ 1
Вы возвращаете шестнадцатеричную версию ввода, а не хэш:
foreach (byte b in bs)
должен быть
foreach (byte b in hash)
(Альтернативой является использование Convert.ToBase64String(hash)
, если вы не против, чтобы он был в Base64, а не в hex.)
Ответ 2
Для этого уже принят принятый ответ, но для других пользователей, использующих MD5 в Silverlight или Windows Phone, я размещаю ссылку на другую реализацию MD5, с которым я добился большего успеха.
Я провел несколько часов, ударяя головой о стену с реализацией, упомянутой в оригинальном посте, пытаясь заставить его работать в моем проекте Windows Phone. Он работал в некоторых случаях, а не в других.
Версия Джеффа Уилкокса отлично работала.