Вычисление хэша MD5 на C#

{lang: 'ru'}

Недавно передо мной встала задача вычислить md5-хэш на C#. Мне нужно было получить хэш-сумму для строки с паролем, чтобы не передавать (да и не хранить) его открытым текстом. Естественно, писать ручками я этого не собирался и решил поискать стандартные решения. К счастью, оно нашлось довольно быстро, работает хорошо, используется просто.

Справка: хэширование — процесс преобразования массива данных произвольной длины в строку бит фиксированной длины по определенному алгоритму. Применяется для быстрого сравнения на равенство различных файлов, сокрытия данных (например, паролей), вычисления контрольных сумм (для проверки целостности данных). Отличительной особенностью хэшей является то, что зная хэш, невозможно восстановить исходную последовательность. Но для одних и тех же входных данных вычисленный хэш всегда одинаков.

Для хэширования нам нужно использовать пространство имен

Оно включает в себя различные криптографические службы: кодирование, декодирование, генерацию случайных чисел… и, в том числе, хэширование. В нем нас интересует класс MD5. Использовать его нужно так:

Теперь в переменной sBuilder содержится строка с хэшем MD5. Преобразовать её из StringBuilder в привычный string проще простого:


Теперь этот код можно поместить в статический метод getMd5Hash(string input), и удобно использовать.

Отмечу, что именно такой способ вычисления хэша у меня принял сервер авторизации. При использовании других реализации, которые мне попадались, пройти проверку не удавалось.

PS: Пример взят из MSDN.

PPS: В качестве картинки для этого поста взят хэш строки «Hash», вычисленный данной функцией.


Полезная статья? Их будет больше, если вы поддержите меня!


  • Спасибо. То, что доктор прописал

  • Константин

    Microsoft, как обычно не может по нормальному сделать. Приходится такие пляски производить. Спасибо! Я тоже по MSDN смотрел но так и не понял как получить «правильный» хэш.

  • Игорек Незнайкин

    Подскажите пожалуйста как вычислить hash md5 на мэйле? в вк все просто, там нужен только токен при обращении к API, а вот на мэйле совсем не так просто, в шарпее новичок, надеюсь подскажите, если что, можно будет списаться или созвониться по skype

    • lexpenz

      К сожалению я не работал с API Mail.ru и не очень представляю, где именно там нужно вычислять md5 и для чего.