Похоже, что это подход, который даст вам немного дополнительной безопасности при больших усилиях, не говоря уже о дополнительных головных болях отладки запросов с использованием зашифрованных данных!
Если целью является защита данных в базе данных, я рекомендую зашифровать базу данных в целом и использовать аутентификацию и контроль доступа, чтобы гарантировать, что данные предоставляются только вашей программе и нет несанкционированного доступа. Если база данных попадет в чужие руки, под этой системой злобные негодяи должны будут выяснить имя пользователя / пароль или другие учетные данные, используемые для аутентификации законного пользователя для получения доступа. Как правило, это означает либо поиск методом «грубой силы», либо обратный инжиниринг кода (если учетные данные хранятся в вашей программе - не очень хорошая идея).
Если вы зашифровываете все данные в базе данных на уровне строка за строкой, так что она зашифрована для вашей программы, она все равно должна быть расшифрована вашей программой. Секретный ключ может быть найден путем обратного инжиниринга вашего кода.
Итак, я надеюсь, вы видите, что шифрование каждого возвращенного набора результатов будет сложно реализовать, но оно не более безопасно, чем использование легкодоступных решений (шифрование файлов базы данных и проверка подлинности / контроль доступа).
РЕДАКТИРОВАТЬ: я написал это с учетом локальной базы данных, так как ОП говорит о том, что злоумышленник овладевает базой данных. С другой стороны, если вы используете удаленный сервер базы данных, который физически защищен, протокол с шифрованием транспортного уровня, например HTTPS даст вам то, что вы хотите. Злоумышленник в середине не сможет понять, какие данные передаются между вашей программой и базой данных. Это также прозрачно - ваш код доступа к данным не нужно менять вообще.