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. Он работал в некоторых случаях, а не в других.

Версия Джеффа Уилкокса отлично работала.