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.