MD5 - это хеш-функция, и есть еще такие, как SHA, PBKDF, bcrypt и scrypt. Я действительно предпочитаю Scrypt. Хеш-функции используются по соображениям целостности, чтобы обнаружить любые манипуляции, которые могут произойти во время передачи фактического сообщения. Получатель может определить, не было ли полученное сообщение не изменено, путем проверки значения хеш-функции сообщения.
Эти функции имеют три свойства безопасности:
1) Для кого-то трудно обнаружить фактическое сообщение, когда оно имеет только h (m).
2) Учитывая сообщение m и его хеш-функцию, трудно найти другое сообщение с таким же хеш-значением.
3) Наконец, трудно найти разные сообщения m1, m2 с одинаковым значением хеш-функции.
Кроме того, важно знать, что алгоритмы хэш-функции являются общедоступными, и очень легко вычислить значение хеш-функции сообщения. Более того, хэши являются «односторонними» функциями, а это означает, что трудно найти сообщение по хешу сообщения. Фактическая безопасность, таким образом, основана на этом свойстве.