MD5 хэш в серебряном свете - PullRequest
10 голосов
/ 17 ноября 2010

Я работаю над приложением 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, знаете, где я ошибся?

Ответы [ 2 ]

11 голосов
/ 17 ноября 2010

Вы возвращаете шестнадцатеричную версию ввода , а не хеша:

foreach (byte b in bs)

должно быть

foreach (byte b in hash)

(Альтернативой является использованиеConvert.ToBase64String(hash) если вы не возражаете против того, чтобы быть в Base64, а не в шестнадцатеричном.)

4 голосов
/ 12 сентября 2011

Уже есть принятый ответ на этот вопрос, но для тех, кто использует MD5 в Silverlight или Windows Phone, я публикую ссылку на другую реализацию MD5, с которой у меня больше успеха,

Я потратил несколько часов, стуча головой о стену с помощью реализации, упомянутой в оригинальном посте, пытаясь заставить ее работать в моем проекте Windows Phone.Это работало в некоторых случаях, а не в других.

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

...