blacknightwolf
@blacknightwolf

Безопасно ли так хешировать пароли?

Безопасно ли такое хеширование паролей?
$text = 'password';
$hash = sha1(sha1(md5(sha1(sha1(md5(sha1(sha1(md5(md5(sha1(md5(sha1(($text))))))))))))));
echo $hash;

Реально ли подобрать по словарям полученный хеш? Или подобрать его каким-то другим способом? На сайтах и в гугле такого хеша нет. (Максимум предлагают тройное md5 или sha1). Или такое хеширование не имеет смысла?
  • Вопрос задан
  • 768 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Зачем изобретать велосипед, когда давно уже есть password_hash()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Jump
@Jump
Системный администратор со стажем.
Безопасно ли так хешировать пароли?
Вопрос не имеет смысла. Нужно просто понимать для чего делается хэширование.

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

Или такое хеширование не имеет смысла?
Совершенно верно.
Имеет смысл использовать штатные функции хэширования.
Можно и самому изобретать велосипед, но только в том случае, если вы четко понимаете для чего нужен хэш, и чем ваш метод лучше стандартного.

Итак - хэш это некоторое число, которое можно получить применив к паролю известный метод хэширования.
Это число отвечает следующим требованиям -
  • хэширование одинакового пароля всегда выдает один и тот же хэш.
  • Хэширование любого другого отличного от пароля - в подавляющем случае дает другой хэш, хотя в некоторых случаях может дать и тот же самый хэш.
  • Из хэша никак нельзя восстановить пароль.


Используется хэш в большинстве случаев для исключения хранения паролей.
Пароль хранить небезопасно, поэтому его не хранят.
Но нужно же как-то определять - верный пароль ввел пользователь или нет.
Поэтому хранят хэш пароля.
Пользователь вводит пароль, его хэшируют и сравнивают с тем хэшем, что хранится в базе, если они совпадают, значит пользователь ввел правильный пароль.
Ответ написан
@asd111
Небезопасно потому что удачные взломы sha1 уже были. По сути вы сделали сложный sha1 хэш.
Нужно использовать password_hash(). Его придумали специально для хэширования паролей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы