Можно ли получить исходное значение хешированного значения, предложив механизм частичного поиска?

Информация: использование SHA-512 с солью.

Я хэширую некоторые конфиденциальные значения для поддержки механизма поиска, так как расшифровка значений во время выполнения займет много времени.

На данный момент все выглядит хорошо. У меня есть хэши исходных значений, хранящихся в БД, которые были хэшированы с определенной солью. Всякий раз, когда пользователь пытается выполнить поиск с параметром поиска, входное значение хэшируется с той же солью, и я просто сопоставляю два хешированных значения. Этого достаточно для моей работы.

Но сейчас я хочу предложить частичный поиск. Итак, если у меня есть хеш-значения «Привет», «Привет», «Привет», и если пользователи вводят «H», все три значения должны быть сопоставлены и получены.

Можно ли получить этот функционал?

Любая помощь будет оценена по достоинству.

Спасибо


person Shwet Mahalgi    schedule 03.07.2019    source источник
comment
Невозможно из-за того, как работают алгоритмы хеширования   -  person Felix    schedule 03.07.2019
comment
Я не совсем понимаю, что это за поиск. Какая польза пользователю от поиска, если ваша база данных содержит только хешированные значения? Это концептуально только когда-либо может ответить на вопрос о том, находится ли точная строка в вашем наборе данных, и ничего больше.   -  person M. Prokhorov    schedule 03.07.2019
comment
Может быть, с радужными столами? Но они могут хранить несколько ГБ и, вероятно, не слишком быстры. И они дали бы вам расстояние больше, чем точное совпадение...   -  person Matthieu    schedule 03.07.2019
comment
Нечто подобное возможно с хэшированием с учетом местоположения, но не с криптографическими хэшами, такими как SHA. -512.   -  person Jim Mischel    schedule 04.07.2019
comment
Дизайн SHA-xxx как раз и состоит в том, чтобы избежать его расхеширования... поэтому ответ нет.   -  person Luis Colorado    schedule 04.07.2019


Ответы (1)


Если я правильно вас понял, это невозможно.

Позвольте мне уточнить и объяснить: вы хотите знать, можете ли вы узнать, вставив H в поле поиска, связан ли хэш с хешем «Привет, привет, привет» вообще. Верно?

Если это так, то это невозможно, так как характеристики безопасной хэш-функции таковы, что изменение одного входа значительно меняет все результирующее хеш-значение.

Эта характеристика называется сопротивлением предварительного изображения.

Дополнительную информацию о хэшах можно найти, например, здесь

person meaningqo    schedule 03.07.2019