поиск зашифрованного текста AES/CBC

Моя система хранит адрес электронной почты пользователя в базе данных с шифрованием AES/CBC. Таким образом, все эти адреса электронной почты хранятся в зашифрованном виде (base64). И зашифрованный текст генерируется по-разному каждый раз, когда даже обычный текст одинаков (это режим CBC).

Есть ли способ поиска адреса электронной почты только с подстрокой чьего-либо адреса электронной почты из базы данных?

например поиск 'myemail' из зашифрованной AES/CBC версии '[email protected]'

AFAK это невозможно, но я не уверен, что есть какой-то способ, которого я еще не знаю.


person hanjoonk    schedule 28.09.2017    source источник
comment
Нет, это невозможно. Если вам нужно иметь возможность запрашивать по адресу электронной почты, вы не шифруете их.   -  person Luke Joshua Park    schedule 28.09.2017


Ответы (1)


Как вы сказали, невозможно искать электронную почту с подстрокой или запросом SQL, используя like "%substring%".

Единственный поиск, который вы можете сделать, это полнотекстовый поиск: select * from your table where email="[email protected]"

Для этого вы можете добавить поле в свою таблицу. Это новое поле содержит HMAC вашего значения очистки с использованием другого ключа AES. Один называет это «слепым индексом». Таким образом, это поле проиндексировано, и когда вы хотите выполнить поиск по четкому значению, вы:

  • Получите HMAC из вашего ясного значения для поиска
  • select * from your table where email_blindindex="HMAC_value"
person gduh    schedule 25.05.2018