Если вы ищете возможность полнотекстового поиска зашифрованных данных (без возможности расшифровки сообщений сервером базы данных), вы находитесь на территории академических исследований.
Однако , если вам нужен только ограниченный набор возможностей поиска по зашифрованным данным, вы можете использовать слепые индексы , построенные из открытого текста, которые можно использовать в запросах SELECT.
Так что вместо:
SELECT *
FROM humans
WHERE name LIKE '%search_value%';
Вы можете сделать это:
SELECT h.*
FROM humans h
JOIN humans_blind_indexes hb ON hb.human_id = h.id
WHERE hb.first_initial_last_name = $1 OR hb.first_name = $2 OR hb.last_name = $3
А затем передайте ему три усеченных вывода хеш-функции, и вы получите записи вашей базы данных с соответствующими шифротекстами.
Это не просто теоретическое замечание, вы можете сделать это сегодня с этой библиотекой с открытым исходным кодом .