Что на первом месте, соль или хэш? - PullRequest
14 голосов
/ 22 апреля 2011

Хорошо, я знаю, что это, вероятно, очень просто, но я не могу найти прямой ответ нигде. Допустим, у меня есть следующее:

Password: "mypassword"
Salt: 1234567

Является ли идея соления делать что-то вроде hash(password + salt) или hash(password) + salt? Я предполагаю, что только первое имеет какой-то смысл, но я просто хочу убедиться, что я что-то не упустил.

Пожалуйста, прости мое невежество.

Ответы [ 5 ]

17 голосов
/ 22 апреля 2011

У вас есть, это первое.

Если вы просто соединили соль и хеш, то злоумышленник может просто удалить «соль» и использовать радужный стол.Хэшируя простой текст + соль, соль не может быть выделена.

12 голосов
/ 22 апреля 2011

На самом деле, это salt + hash(salt+password) (Salt является частью вычисления хеша - но вы также должны держать его в открытом виде)

6 голосов
/ 22 апреля 2011

хеш (пароль + соль).Если вы объединяете соль после хеширования, конкатенация легко обратима и не создает никаких трудностей при обращении хэша пароля (с радужными таблицами).сохраняет соль $ hash (соль + пароль) в базе данных.Это просто для того, чтобы каждый фрагмент данных, необходимый для проверки пароля по хешу, был доступен в одном месте.

3 голосов
/ 23 августа 2011

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

Ключевым моментом, который не совсем выражен в ответах, здесь является необходимость использования уникальной соли для каждого пароля. Подробнее о причинах читайте по ссылкам.

Почему каждая соль уникальна: Соление Ваш пароль: лучшие практики?

Общий обзор по теме: Генерация соли и программное обеспечение с открытым исходным кодом

0 голосов
/ 22 апреля 2011

Соль должна быть частью вычисления хеша

...