Исходя из ответа Багета. Причина, по которой вы хэшируете пароли, заключается в том, что вам не нужно хранить незашифрованный пароль для аутентификации.
Вместо этого вы храните хэш пароля.
Ваш процесс аутентификации / входа в систему становится примерно таким:
Пользователь вводит пароль.
Хэш-пароль, который они вводят.
Сравните введенный хеш с сохраненным хешем.
Если хэши совпадают, то пароль действителен, поэтому пользователь проходит аутентификацию.
Причина, по которой это делается, заключается в защите данных аутентификации ваших пользователей. Таким образом, если ваш файл паролей или база данных каким-то образом стали общественным достоянием, то злоумышленник не сможет выдать себя за подлинного пользователя.
Таким образом, природа хеширующей функции означает, что она односторонняя, и поэтому исходный простой текст не может быть восстановлен.
Это теория, конечно, на практике все становится сложнее.
Большинство пользователей склонны использовать пароли, которые они могут легко запомнить, так что это означает, что все ваши усилия по обеспечению безопасности могут сойти на нет, потому что если кто-то получит ваш файл паролей / БД, то в автономном режиме они могут создать словарь общих слов и перебора и хэширования методом грубой силы пока они не найдут соответствующий хэш в вашем списке.
Чтобы избежать этого, многие люди используют технику «засолки», когда к паролю перед хэшированием добавляется короткая криптографически «случайная» строка. Прочитайте это для получения дополнительной информации
Другой проблемой здесь является сила вашего алгоритма хеширования - вам нужно убедиться, что вы не можете создать 'коллизию, т.е. два фрагмента открытого текста, которые выдают одинаковое значение хеш-функции.
Многие старые алгоритмы хеширования, такие как MD5 и SHA1, все более уязвимы в этом отношении.
MD5 считается сломанным
SHA1 также считается сломанным
Надеюсь, это поможет, и я понимаю, что это, вероятно, немного больше, чем вы просили, но я думаю, что важно, чтобы люди понимали вопросы безопасности при реализации кода аутентификации