Esta es una gran pregunta.
Mi opinión es permitir que la parte responsable del almacenamiento de los datos también sea responsable de cualquier encriptación de la misma. En este caso, permita que el servidor SQL administre el cifrado.
La razón principal es que rara vez creamos aplicaciones independientes. Es más común tener múltiples aplicaciones que utilicen el mismo back-end de base de datos. Además, es más común reemplazar la tecnología utilizada para construir una aplicación que reemplazar el motor de la base de datos debajo de ella.
Si lo hace en código, entonces cada aplicación que use el almacén de datos tendría que usar su propia biblioteca de cifrado/descifrado para obtener acceso a los datos. Si se realiza en un servidor SQL, entonces las aplicaciones pueden ignorar el proceso a la vez que se mantiene el mismo nivel de protección.
Junto con esto, debe aprovechar la capacidad de cifrar las conexiones con el servidor SQL, que se encargaría de mantener los datos cifrados mientras está en movimiento entre el servidor web/de la aplicación y la base de datos. También debe tener SSL habilitado entre el navegador y su sitio web para garantizar que los datos nunca se descifren entre el navegador -> servidor web -> servidor de base de datos.
Espero que ayude.
+1 buenos puntos en todos los aspectos :) –