2013-08-31 5 views
2

Я просто читал post, чтобы создать систему входа в систему и, читая, я видел о хэшировании паролей.Какой лучший алгоритм хэширования пароля для PHP?

Мы собираемся хранить хеш sha256, который всегда является строкой , содержащей 64 символа.

Эта статья учит использовать SHA256 хэш-функции. Прочитав это, я не остановился и начал искать больше о создании безопасной системы входа в систему, а затем я придумал эту статью на wikiHow. В этой статье они используют функцию хеша sha512. Это действительно смутило меня, какую функцию я буду использовать для моей следующей системы входа. Я по-прежнему искал google для лучшей статьи и нашел эту статью на crackstation. Автор рекомендует и sha256, и sha512.

Только криптографические хэш-функции могут использоваться для реализации пароля хеширования. Хэш-функции, такие как SHA256, SHA512, RipeMD и WHIRLPOOL, - это криптографические хеш-функции .

Я думал, что мой поиск окончен, и я могу использовать sha256 или sha512 функцию, но при поиске больше я нашел SO Question. У принятого ответа Robert K были новые вещи для меня. То, о чем я никогда не слышал, до которого есть bcrypt и scrypt.

Все эти материалы были написаны около 2 - 4 лет назад.

Вопрос

Какой самый лучший алгоритм хэширования паролей использовал эти дни для PHP?

+0

Я думаю, используя более 1 переменных.Например: 'sha1 ($ username. '-'. $ Password);' –

+2

@userNOID: этого все еще недостаточно. Вы также должны прочитать связанный вопрос. –

+0

Также см. Раздел «Переносимость хэширования паролей PHP» (http://www.openwall.com/phpass/) (PHPass). Он затвердел против ряда распространенных атак на пароли пользователей. – jww

ответ

4

Главное, что вы хотите выбрать хеш, который является slow. Единственный возможный вектор атаки для любой из этих хэшей - скот форта. Смысл, злоумышленник может использовать только все возможные пароли один за другим, используя их, используя тот же алгоритм, что и вы, и сравнивайте их с хэшем. Чем дольше это требуется для одного пароля, тем более трудно найти совпадение.

Семейство алгоритмов SHA спроектировано так, чтобы быть быстрым, потому что они не предназначены для использования для этой цели. Таким образом, они сами по себе несколько непригодны для хэширования паролей; хотя они могут использоваться как часть алгоритма, который делает их подходящими, например PBKDF2 (который вкратце повторяет хеширование много тысяч раз до стрейч).

bcrypt и scrypt явно предназначены для медленного и настолько удобны для хэширования паролей. bcrypt спроектирован так, чтобы быть очень дорогостоящим с точки зрения мощности процессора, в то время как scrypt был очень дорогим с точки зрения потребления памяти. Мощность процессора лучше масштабируется с использованием сегодняшнего оборудования, чем память, поэтому в настоящее время scrypt рассматривается как лучшая вещь для использования. Хотя на данный момент он очень режущий, и он не получил поддержки в плане использования кода. bcrypt, с другой стороны, поддерживается PHP, используя password_hash напрямую.

+0

Зачем отвечать на это, когда есть совершенно хороший канонический *** точный *** дубликат? –

+0

Почему бы и нет? Этот вопрос явно касается различий между SHA * и * crypt, поэтому краткий ответ на этот вопрос неплох, нет? – deceze

+0

Его вопрос: «Какой алгоритм хэширования лучшего пароля используется в наши дни для PHP?», На который отлично ответили в дубликате. Здесь ничего тут не спрашивают о различиях между SHA и crypt ... –

Смежные вопросы