Проверка пароля с солью и sha512whirlpool в mysql
Какой будет инструкция SQL для проверки пароля, если таблица MySql выглядит следующим образом:
user_id password salt
------- -------- ----
1 23ed2... m9f3m...
Я старался:
select * from password_table
where user_id = 1
and password = shal(`salt` + 'password')
order by id desc
limit 1
который не вернул ничего. Алгоритм ша512 джакузи.
В php это выглядит так:
hash('sha512', hash('whirlpool', $password));
Вполне возможно, что это не может быть сделано в SQL-выражении.
1 ответ
Вы не можете безопасно хэшировать и проверять пароли с помощью SQL-оператора, потому что не удается найти соленые хэши, а также потому, что большинство баз данных не предлагают соответствующих хеш-функций.
Вместо этого используйте хеш-функцию, такую как BCrypt, SCrypt или PBKDF2 из вашего языка разработки. Для проверки сначала выполните поиск хэша только по имени пользователя / идентификатору, а затем снова проверьте найденный хеш с языком разработки.