protected void GenerateKeyCommand_Click(object sender, EventArgs e)
    {
        try
        {
            SymmetricEncryptionUtility.ProtectKey = EncryptKeyCheck.Checked;
            SymmetricEncryptionUtility.GenerateKey(KeyFileName);

            Response.Write("Key generated successfully!");
        }
        catch
        {
            Response.Write("Exception occured when encrypting key!");
        }
    }
    protected void SaveCommand_Click(object sender, EventArgs e)
    {
        try
        {
            DemoDb.Open();
        }
        catch (Exception ex)
        {
            // Log the error but don't
            // display any details to the user
            System.Diagnostics.Debug.WriteLine("Exception: " + ex.Message);
            // Access to DB failed
            Response.Write("Saving data failed!");
            return;
        }

        try
        {
            string SqlText = "UPDATE ShopInfo " +
                             "SET Street=@street, ZipCode=@zip, " +
                             "City=@city, CreditCard=@card " +
                             "WHERE UserId=@key";

            SqlCommand Cmd = new SqlCommand(SqlText, DemoDb);

            // Add simple values
            Cmd.Parameters.AddWithValue("@street", StreetText.Text);
            Cmd.Parameters.AddWithValue("@zip", ZipCodeText.Text);
            Cmd.Parameters.AddWithValue("@city", CityText.Text);
            Cmd.Parameters.AddWithValue("@key", Membership.GetUser().ProviderUserKey);

            // Now add the encrypted value
            byte[] EncryptedData =
                SymmetricEncryptionUtility.EncryptData(
                    CreditCardText.Text, EncryptionKeyFile);
            Cmd.Parameters.AddWithValue("@card", EncryptedData);

            // Execute the command
            int results = Cmd.ExecuteNonQuery();
            if (results == 0)
            {
                Cmd.CommandText = "INSERT INTO ShopInfo VALUES(@key, @city, @zip, @street, @card)";
                Cmd.ExecuteNonQuery();
            }
        }
        finally
        {
            DemoDb.Close();
        }
    }
    protected void DecryptCommand_Click(object sender, EventArgs e)
    {
        // Check for encryption key
        if (!File.Exists(KeyFileName))
        {
            Response.Write("Missing encryption key. Please generate key!");
        }

        try
        {
            byte[] data = Convert.FromBase64String(EncryptedDataText.Text);
            ClearDataText.Text = SymmetricEncryptionUtility.DecryptData(data, KeyFileName);
        }
        catch
        {
            Response.Write("Unable to decrypt data!");
        }
    }
    protected void LoadCommand_Click(object sender, EventArgs e)
    {
        try
        {
            DemoDb.Open();
        }
        catch (Exception ex)
        {
            // Log the error but don't
            // display any details to the user
            System.Diagnostics.Debug.WriteLine("Exception: " + ex.Message);
            // Access to DB failed
            Response.Write("Loading data failed!");
            return;
        }

        try
        {
            string     SqlText = "SELECT * FROM ShopInfo WHERE UserId=@key";
            SqlCommand Cmd     = new SqlCommand(SqlText, DemoDb);
            Cmd.Parameters.AddWithValue("@key", Membership.GetUser().ProviderUserKey);
            using (SqlDataReader Reader = Cmd.ExecuteReader())
            {
                if (Reader.Read())
                {
                    // Cleartext Data
                    StreetText.Text  = Reader["Street"].ToString();
                    ZipCodeText.Text = Reader["ZipCode"].ToString();
                    CityText.Text    = Reader["City"].ToString();

                    // Encrypted Data
                    byte[] SecretCard = (byte[])Reader["CreditCard"];
                    CreditCardText.Text =
                        SymmetricEncryptionUtility.DecryptData(
                            SecretCard, EncryptionKeyFile);
                }
            }
        }
        finally
        {
            DemoDb.Close();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Configure Encryption Utility
        EncryptionKeyFile = Server.MapPath("key.config");
        SymmetricEncryptionUtility.AlgorithmName = "DES";
        if (!System.IO.File.Exists(EncryptionKeyFile))
        {
            SymmetricEncryptionUtility.GenerateKey(EncryptionKeyFile);
        }

        // Create the connection
        DemoDb = new SqlConnection(
            ConfigurationManager.ConnectionStrings["DemoSql"].ConnectionString);

        // Associate with Textfields
        CreditCardText = (TextBox)MainLoginView.FindControl("CreditCardText");
        StreetText     = (TextBox)MainLoginView.FindControl("StreetText");
        ZipCodeText    = (TextBox)MainLoginView.FindControl("ZipCodeText");
        CityText       = (TextBox)MainLoginView.FindControl("CityText");
    }