Проверка пароля с солью и 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 из вашего языка разработки. Для проверки сначала выполните поиск хэша только по имени пользователя / идентификатору, а затем снова проверьте найденный хеш с языком разработки.

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