Использование хэширования Хранение данных, паролей
Обычно пароли хранятся не в чистом виде, а хранятся лишь их хэш-значения. Такое хранение удобно потому, что даже если кто-то сможет получить доступ к файлу с хэш-значениями паролей – он не сможет восстановить исходный текст. При аутентификации вычисляется хэш-значение введённых данных, а затем сравнивается с сохранённым значением.
Хэш-функции используют для безопасной передачи данных. Пусть некий клиент, с именем name, производит аутентификацию по парольной фразе, pass, на некоем сервере. На сервере хранится значение хеш-функции H(pass, R2), где R2 — псевдослучайное, заранее выбранное число. Клиент посылает запрос(name, R1), где R1 — псевдослучайное, каждый раз новое число. В ответ сервер посылает значение R2. Клиент вычисляет значение хеш-функции H(R1, H(pass, R2)) и посылает его на сервер. Сервер также вычисляет значение H(R1, H(pass, R2)) и сверяет его с полученным. Если значения совпадают — аутентификация верна.
Вывод
Подводя итоги, можно смело сказать, что самый распространенной хэш-функцией является алгоритм MD5, который довольно быстро и стремительно набрал свою популярность. Однако использование его в чистом виде достаточно небезопасно, что нельзя сказать о SHA512, ведь его хэш куда длиннее, что сводит вероятность коллизий к минимуму. Он также довольно широко используется, но все же уступает MD5.
Однако и тот и тот шифр без применения солей имеют право быть названными небезопасными хэшами.
В заключении скажем, что MD5 (с солями), самый распространенный алгоритм хэширования общего применения, который имеет довольно высокую степень защиты.
Но по сравнению с алгоритмом SHA-512 с солью, который пока не имеет найденных коллизий, он остается на втором месте по степени защищенности.
