У меня дилемма. У меня есть поле hashedX
, которое является хешированным/соленым значением, и соль сохраняется в той же строке в базе данных mysql, что является обычной практикой.
hashedX saltX
------ ------
hashed1 ssai3
hashed2 woddp
hashed3 92ofu
Когда я получаю inputX
, мне нужно знать, соответствует ли оно какому-либо из значений в hashedX
, например hashed1
hashed2
или hashed3
. Так что обычно я брал свои входные данные, хэшировал/солил их и сравнивал со значениями hashedX
. Псевдокод:
$hashed_input = hash ($input with $salt );
select * from tablename where $hashed_input is hashedX
Проблема в том, что я не знаю, какое saltX
мне нужно, чтобы добраться до $hashed_input
, прежде чем я смогу сделать select
.
Я мог бы просмотреть строки базы данных одну за другой, попробовать эту соль на своем входе, а затем проверить, соответствует ли ввод, хешированный/солёный с этой солью, hashedX
той же строки. Если у меня есть 100 000 записей, я предполагаю, что это будет мучительно медленно. Я понятия не имею, насколько медленно, так как я не очень хорошо разбираюсь в базах данных.
- Есть ли лучший способ сделать это, чем выбирать все строки, перебирать их, использовать соль этой строки для ввода хэша, а затем снова сравнивать с хешированным значением в БД?