Я разрабатываю систему аутентификации, которая работает следующим образом:
- Пользователь вводит пароль
- Соль генерируется.
- Пароль хэшируется с помощью вихревой сети
- Whirlpool hashed пароль, конкатенированный с простой солью.
- Конкатенированная версия хешируется с помощью sha1 и сохраняется в базе данных.
- Я правильно проверяю пароль, хешируя пароль на прикладном уровне, а затем делаю это (в MySQL):
MySQL
WHERE `Password` = SHA1(CONCAT('$hashedPassword',`Salt`)) AND [..]
В настоящий момент моя соль составляет 64 байта. Будет ли этого достаточно, чтобы сделать его невозможным для атаки словаря?
Я уверен, что sha1 обнаружил уязвимости, но это единственная функция, доступная в моей версии MySQL (5.1), которую я могу использовать на уровне базы данных, вместо того, чтобы выбирать равную соль над соединением между приложением и базой данных слой.