Пишется демон (db-wrapper) на сокет, который получает ключ из файла (или другого хоста) для дешифрования результата БД внутри этого процесса-демона. Соль ключа - хранится внутри этого процесса с привязкой к домену или MAC-интерфейса.
Демон запускается от имени другого пользователя с урезанными правами, нежели чем web-сервер и PHP.
Можно дешифровать данные непосредственно на клиенте через JS.
Но, это уже совсем другая история....