blacknightwolf
@blacknightwolf

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

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

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

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

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

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


Используется хэш в большинстве случаев для исключения хранения паролей.
Пароль хранить небезопасно, поэтому его не хранят.
Но нужно же как-то определять - верный пароль ввел пользователь или нет.
Поэтому хранят хэш пароля.
Пользователь вводит пароль, его хэшируют и сравнивают с тем хэшем, что хранится в базе, если они совпадают, значит пользователь ввел правильный пароль.
Ответ написан
@oxidmod
Не имеет смысла. Достаточно встроенных функций
php.net/manual/ru/function.password-hash.php
php.net/manual/ru/function.password-verify
Ответ написан
@asd111
Небезопасно потому что удачные взломы sha1 уже были. По сути вы сделали сложный sha1 хэш.
Нужно использовать password_hash(). Его придумали специально для хэширования паролей.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Код Безопасности Санкт-Петербург
от 100 000 руб.
Solorum Group Москва
от 100 000 до 120 000 руб.
Devmasterz Санкт-Петербург
от 2 000 usd.
15 авг. 2018, в 01:47
30000 руб./за проект
15 авг. 2018, в 01:09
70000 руб./в месяц
14 авг. 2018, в 22:43
350 руб./за проект