Это отличный вопрос.
Я взял на себя ответственность за то, чтобы часть, ответственная за хранение данных, также отвечала за любое ее шифрование. В этом случае разрешите серверу SQL управлять шифрованием.
Основная причина в том, что мы редко создаем автономные приложения. Чаще всего несколько приложений используют один и тот же сервер базы данных. Кроме того, чаще заменять технологию, используемую для создания приложения, чем заменять ядро базы данных под ним.
Если вы делаете это в коде, то каждое приложение, которое использует хранилище данных, должно будет использовать свою собственную библиотеку шифрования / дешифрования, чтобы получить доступ к данным. Если все сделано на сервере sql, то приложения могут не знать о процессе, пока вы сохраняете тот же уровень защиты.
Наряду с этим вы должны использовать возможность шифрования соединений с SQL-сервером, что позволит хранить данные в зашифрованном виде во время их перемещения между сервером веб / приложений и базой данных. Также вы должны включить SSL между браузером и вашим веб-сайтом, чтобы данные никогда не расшифровывались между браузером -> веб-сервером -> сервером базы данных.
Надеюсь, это поможет.