Что означает включение «случайной соли» в хеширование паролей фреймворка django? - PullRequest
2 голосов
/ 29 июля 2011

Я довольно новичок в Django. Просто обойдя систему аутентификации django по умолчанию, я обнаружил, что django хранит пароль пользователя в формате algorithm$salt$hashed. И соль не одинакова для каждого пользователя; Django генерирует каждую новую соль для каждого пользователя.

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

Итак, мой вопрос:

  1. Почему django использует «случайную» соль рядом с «одной» строкой соли?
  2. Почему django хранит его в одном столбце с хэшем пароля?

Ответы [ 3 ]

6 голосов
/ 29 июля 2011

Почему django использует «случайную» соль рядом с «одной» строкой соли?

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

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

Почему django хранит его в одном столбце с хэшем пароля?

Я не знаю, о чем вы конкретно спрашиваете, но, вероятно, есть 2 ответа.

- Он хранится, потому что кто-то спроектировал его таким образом.Это может быть на соляном поле, и это не имеет значения.

-При отправке пользователем пароля через форму django присоедините соль к строке, затем вычислите sha1 и проверьте, соответствует ли он указанному в db.

3 голосов
/ 29 июля 2011

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

1 голос
/ 29 июля 2011

Практика взлома пароля предназначена для того, чтобы злоумышленнику было труднее взломать взломанные вами пароли. Подробнее .

...