Можно ли сохранить пароли, зашифрованные с помощью sha256_crypt, но без дополнительной соли?

Это сохранить, чтобы создать хэш паролей пользователей с sha256_crypt.encrypt("secretUserPassword") и сохранить его в базе данных без добавления предела в хеш?

Если это так, что защищает хэши от атак на радужные таблицы?

Вот как я создаю нового пользователя в своем веб-приложении и сохраняю его в базе данных:

admin = User()
admin.name = 'admin'
admin.password = sha256_crypt.encrypt("secretAdminPassword")
db.persist_user(admin)

Вот как я проверяю учетные данные и авторизируюсь

username = request.form['username']
password = request.form['password']   
user = user_from_db(username)
if sha256_crypt.verify(password, user.password):
   login_user(user)

1 ответ

Решение

В документации говорится, что функция sha256_crypt.encrypt("password") не только вычисляет хэш SHA-256, но и...

  1. добавляет соль автоматически
  2. делает много раундов хеширования

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

Другие вопросы по тегам