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

{lang: 'ru'}

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

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

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

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

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


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

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

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

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


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