#php #mysql #pdo #bcrypt
#php #mysql #pdo #bcrypt
Вопрос:
Мне нужно запросить серийный номер в базе данных MySQL, из-за чувствительности этого серийного номера он хранится в базе данных как хэш bcrypt. Хэш генерируется со случайной солью, которая является поведением по умолчанию из функции password_hash().
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно запросить базу данных по этому хэшу, другого требуемого идентификатора нет. Я могу использовать фиксированную соль, но она устарела с PHP 7.0. Я уже знаю, что таблица будет очень сильно увеличиваться со временем, и что получение всех результатов, а затем проверка всех хэшей будет довольно хлопотной. Для проверки хеширования в будущем было решено, что мне нужно использовать функцию password_hash() .
Есть ли какой-либо способ запросить базу данных без ущерба для безопасности, производительности или использования устаревшей функциональности?
В качестве примечания для извлечения результатов используется PDO.
Комментарии:
1. Хэши со случайной солью, как правило, не индексируются / не запрашиваются. По сути, это то, для чего они не были разработаны. Они не подходят для этой работы. По сути, вы просите невозможного.
2. @deceze Это позор. Я надеялся, что найдется решение, потому что password_verify() можно использовать для проверки строки в хэше, и что будет упущен оптимизированный метод для использования этого в запросе.
3. Если вы хотите сохранить хэш в базе данных вместо реального значения, тогда вам нужен несоленый хэш, подобный семейству SHA. Но тогда возникает вопрос о том, что вы пытаетесь скрыть и от кого, поскольку этот вид хэша может быть грубо принудительным в худшем случае.
4. @deceze Хэш имеет денежную ценность. В случае взлома базы данных хеширование, которое легко можно использовать, будет разрушительным для клиента. Я рассмотрю хэш SHA, потому что в любом случае это лучше, чем хранить его как необработанное значение. Спасибо!