I am developing a symmetric en-/decryption routine written in c# for a database containing user-specific, sensitive information.
I have narrowed down the implementation to 3 different approaches, but simply cannot determine which is the "best". So, which of these is the most secure?
AES in GCM mode. Using either BouncyCastle or CLR Security implementation. For those who don't know, GCM mode utilizes CTR mode with a provided counter (not sure of the exact implementation) and an additional message authentication process (definitely not HMAC)
AES in CTR mode. Using Bouncy or CLR security again. In this instance I would use the .net HMAC and utilize a 16 byte IV randomly generated (securely) as the unique nonce.
AES in CBC mode. Using the .NET implementation. Again the HMAC from .net and rand IV.
The simpler the better cause I'll probably mess it up
Thanks a bunch