Какой метод хэширования лучше md5 или SHA-1 для безопасного пароля?
1,00
р.
р.
Какой хэширования лучше md5 или SHA-1 для безопасного пароля? Например такой md5 хэширования $password = md5($password) и я хочу изменить на SHA-1 хэширования , можно просто изменить так $password = sha1($password) ?
Ответ md5 и sha-1 - это не способы шифрования. Это способы вычисления хэша (хэш-функции). Они используются не для того, чтобы "зашифровать" пароль. Они используются для того, чтобы не хранить пароль вообще. В случае, если вы используете длинную соль (сейчас вы ее не используете вообще), "криптостойкость" хэшей практически одинаковая - злоумышленнику, укравшему базу, в любом случае придется перебирать пароли достаточно долго. Поэтому основное требование к хэш-функции - минимальная вероятность коллизий - нахождения другой входной строки, на котором хэш-функция выдаст тот же результат. Потому что всегда есть вероятность что хэш пароля password совпадет с хэшем пароля VFst4S3g5e%#%#gsgfdgb. И при попытке подобрать пароль по словарю или брутфорсом злоумышленника пустит на сайт под простым паролем. Эта ситуация маловероятна, но тем не менее - вероятность коллизий в sha-1 намного меньше, чем в древнем md5. Поэтому использование sha-1 или других новых алгоритмов - более предпочтительный вариант. UPD: я специально не рассматривал случай, когда база слита, и перебор идет по ней. На современном железе полный перебор - это вопрос времени. В реальности это затрагивает только тех пользователей, которые не используют двухфазную аутентификацию и при этом используют одинаковый короткий пароль для всех сайтов. В реальности, если у вас слили базу, то есть всего два варианта: У вас слили и все остальные данные тоже, и слитые пароли - меньшее, что вас будет волновать. Вам не будет совершенно никакой разницы, md5 или sha-256 у вас использовался. Потому что свою основную цель - защиту от несанционированного доступа - пароль не выполнил. У вас слили только данные пользователей, забрутфорсили все пароли и выложили в открытый доступ. Тогда вы извиняетесь, просите всех пользователей сменить пароль по ссылке из email и продолжаете работать как будто ничего не было.