Зашифровывает ли пароль несколько раз действительно делает его более безопасным?

Возможный дубликат:
Является ли «двойной хэширование» паролем менее безопасным, чем просто его хэширование?

Итак, я читал статью о защите веб-сайтов PHP, и они рекомендовали хэшировать пароль несколько раз, на самом деле это прямая цитата из статьи:

md4(md4(md5(sha1(md4(md5(sha1(sha1($_POST['password'])))))))); 

Теперь, лично, я обычно использую засоленный хэш SHA-256 в моих паролях, потому что я думал, что MD4 и MD5 больше не защищены, и что хеширование пароля несколько раз просто наложило бы слишком много нагрузки на сервер без каких-либо практических преимуществ. Это верно?

Прямая цитата из статьи не будет работать, так как в PHP нет функции md4() . И тогда это не имело бы смысла.

Обычно применение нескольких функций хэширования не повредит. Но когда вы переходите от sha1 к md5 вы теряете диапазон ввода (md5 дает вам 128-битный выход, но sha1 составляет 160 бит). Это переустановка сокращенной выдержки, что означает, что возможный выходной набор никогда не будет больше, чем у md5() .

Немного. Если целью является получение первоначального пароля, это становится невыполнимой задачей. Однако, как правило, это не так, и если вы действительно используете md4 для внешнего хэша, хорошо .. http://en.wikipedia.org/wiki/MD4#Security

Существует много других способов повышения безопасности, наиболее распространенным из которых является использование какой-либо случайной соли, которая не сохраняется вместе с паролем.

Лучшее, что вы можете сделать для защиты пароля, это: 1) использовать hash_hmac с sha256 или выше 2) использовать случайный nonce для пользователя и хранить его в db 3) использовать случайный счетчик итераций для каждого пользователя и хранить его в db ,

Вы также должны прочитать: Защитить хэш и соль для паролей PHP

Если вы не храните свои пароли десятки тысяч раз, вы не знаете, что делаете.

Это вычислительно дорого; это точка. Для законной цели аутентификации пользователя, у которого есть правильный пароль, нагрузка незначительна. Но для взломщика, который пытается протестировать огромный список паролей в автономной атаке, стоимость непомерно высока.

Использование тысяч итераций хэш-функции – это хорошо зарекомендовавшая себя и широко используемая техника для «укрепления ключа». Он включен в стандарты для деривации ключей и используется в таких алгоритмах, как bcrypt для защиты паролем.

Используйте bcrypt или PBKDF2, для чего вам потребуется использовать соль и итерации. Не пытайтесь составить свой собственный метод, используя несколько сломанных хэшей.