public SymmetricParameters GenerateSymmetricParameters(string password, string salt)
        {
            Rijndael myalg = Rijndael.Create();

            Rfc2898DeriveBytes  mygenerator = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt));
            SymmetricParameters ps          = new SymmetricParameters()
            {
                SecretKey = mygenerator.GetBytes(myalg.KeySize / 8),
                IV        = mygenerator.GetBytes(myalg.BlockSize / 8)
            };

            return(ps);
        }
        public byte[] Decrypt(string fileData, SymmetricParameters p)
        {
            byte[] fileDataByte = Convert.FromBase64String(fileData);

            Rijndael myalg = Rijndael.Create();

            MemoryStream msOut = new MemoryStream();
            CryptoStream myEncryptingStream = new CryptoStream(msOut, myalg.CreateDecryptor(p.SecretKey, p.IV), CryptoStreamMode.Write);

            MemoryStream msIn = new MemoryStream(fileDataByte);

            msIn.Position = 0;
            msIn.CopyTo(myEncryptingStream);
            myEncryptingStream.Flush();
            myEncryptingStream.FlushFinalBlock();

            msOut.Position = 0;
            return(msOut.ToArray());
        }
        public string Encrypt(byte[] fileData, SymmetricParameters p)
        {
            string result = String.Empty;

            Rijndael myalg = Rijndael.Create();

            MemoryStream msOut = new MemoryStream();
            CryptoStream myEncryptingStream = new CryptoStream(msOut, myalg.CreateEncryptor(p.SecretKey, p.IV), CryptoStreamMode.Write);

            MemoryStream msIn = new MemoryStream(fileData);

            msIn.Position = 0;
            msIn.CopyTo(myEncryptingStream);
            myEncryptingStream.Flush();
            myEncryptingStream.FlushFinalBlock();

            msOut.Position = 0;

            result = Convert.ToBase64String(msOut.ToArray());

            return(result);
        }