I'm writing a .NET web app that will read and write information to a SQL Server 2008 database. Some of this information will be highly confidential in nature so I want to encrypt certain data elements.
I don't want to use TDE or any full-database encryption for performance reasons. My main concern is protecting this sensitive data as a last resort against a SQL injection or even a database server compromise.
What is the best way to do this to preserve performance? Is it faster to use the SQL Server 2008 encryption functions such as EncryptByKey, or would it be faster to encrypt and decrypt the data in the .NET web app itself? The app would be using a symmetric key stored in the secure web.config and store the encrypted values in the DB.