AES-GCM Symmetric Encryption/Decryption

Symmetric encryption uses the same secret key for encryption and decryption.

This should only be used if you have a secure way of sharing the secret key.

This implementation uses a user supplied password to generate the secret key.