Безопасно ли так хешировать пароли?
Вопрос не имеет смысла. Нужно просто понимать для чего делается хэширование.
Реально ли подобрать по словарям полученный хеш?
Хэш по словарям не подбирают. Подбирают пароль по словарям - есть такое. А хэш подбирать это вообще бессмысленное занятие - кому он нужен этот хэш и для чего? Он же никакой ценности не представляет.
И для того чтобы его получить достаточно просто применить функцию хэширования, это сможет сделать любой человек умеющий считать.
Или такое хеширование не имеет смысла?
Совершенно верно.
Имеет смысл использовать штатные функции хэширования.
Можно и самому изобретать велосипед, но только в том случае, если вы четко понимаете для чего нужен хэш, и чем ваш метод лучше стандартного.
Итак - хэш это некоторое число, которое можно получить применив к паролю известный метод хэширования.
Это число отвечает следующим требованиям -
- хэширование одинакового пароля всегда выдает один и тот же хэш.
- Хэширование любого другого отличного от пароля - в подавляющем случае дает другой хэш, хотя в некоторых случаях может дать и тот же самый хэш.
- Из хэша никак нельзя восстановить пароль.
Используется хэш в большинстве случаев для исключения хранения паролей.
Пароль хранить небезопасно, поэтому его не хранят.
Но нужно же как-то определять - верный пароль ввел пользователь или нет.
Поэтому хранят хэш пароля.
Пользователь вводит пароль, его хэшируют и сравнивают с тем хэшем, что хранится в базе, если они совпадают, значит пользователь ввел правильный пароль.