Saturday 19 July 2014

Encrypt and Decrypt XML File using C# in asp.Net

Encrypt and Decrypt XML file in Asp.Net



Description:-

In this example we explain that how to encrypt and Decrypt XML file in asp.net with C#.in previous we already explain that how to Encrypt and Decrypt Password when user is register to website then it's password are sstored in sqlserver database in Encrypt format and when user is login to website then it will fetch the Encrypt password from the database and Decrypt it and match with user enter password.so this is simple thing but now in this example we will explain how to Encrypt and Decrypt whole XML file in asp.net.

The main advantages to Encrypt and Decrypt XML file is that even user can not seen data in XML file because data are stored in Encrypt format so it can not be raed by any user. When any operation is performed in XML file then it will first Decrypt XML file and then perform operation. So this is the best facility for any application for better security.

Bind data in Accordion Control from database bind Dynamic data in Accordion Control

inner zoom effect of image bind into gridview from database Display Inner zoom Effect of the image in Gridview
Default2.aspx:-

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to Encrypt and Decrypt XML file in asp.Net
    </title>

</head>
<body>
    <form id="form1" runat="server">
<asp:FileUpload ID="flupld_xmlfile" runat="server" />
<hr />

<asp:Button ID = "btnEncrypt" Text="Encrypt File" runat="server"
        OnClick = "EncryptFile" style="height: 26px" />
<asp:Button ID = "btnDecrypt" Text="Decrypt File" runat="server" OnClick = "DecryptFile" />
    </form>
</body>

</html>


Default2.aspx.cs:-

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Security.Cryptography;


public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void EncryptFile(object sender, EventArgs e)
    {
        //Get the Input File Name and Extension.
        string fileName = Path.GetFileNameWithoutExtension(flupld_xmlfile.PostedFile.FileName);
        string fileExtension = Path.GetExtension(flupld_xmlfile.PostedFile.FileName);

        //Build the File Path for the original (input) and the encrypted (output) file.
        string input = Server.MapPath("~/Files/") + fileName + fileExtension;
        string output = Server.MapPath("~/Files/") + fileName + "_enc" + fileExtension;

        //Save the Input File, Encrypt it and save the encrypted file in output path.
        flupld_xmlfile.SaveAs(input);
        this.Encrypt(input, output);

        //Download the Encrypted File.
        Response.ContentType = flupld_xmlfile.PostedFile.ContentType;
        Response.Clear();
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(output));
        Response.WriteFile(output);
        Response.Flush();

        //Delete the original (input) and the encrypted (output) file.
        File.Delete(input);
        File.Delete(output);

        Response.End();
    }

    private void Encrypt(string inputFilePath, string outputfilePath)
    {
        string EncryptionKey = "MAKV2SPBNI99212";
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);
            using (FileStream fsOutput = new FileStream(outputfilePath, FileMode.Create))
            {
                using (CryptoStream cs = new CryptoStream(fsOutput, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
                    {
                        int data;
                        while ((data = fsInput.ReadByte()) != -1)
                        {
                            cs.WriteByte((byte)data);
                        }
                    }
                }
            }
        }
    }
    protected void DecryptFile(object sender, EventArgs e)
    {
        //Get the Input File Name and Extension
        string fileName = Path.GetFileNameWithoutExtension(flupld_xmlfile.PostedFile.FileName);
        string fileExtension = Path.GetExtension(flupld_xmlfile.PostedFile.FileName);

        //Build the File Path for the original (input) and the decrypted (output) file
        string input = Server.MapPath("~/Files/") + fileName + fileExtension;
        string output = Server.MapPath("~/Files/") + fileName + "_dec" + fileExtension;

        //Save the Input File, Decrypt it and save the decrypted file in output path.
        flupld_xmlfile.SaveAs(input);
        this.Decrypt(input, output);

        //Download the Decrypted File.
        Response.Clear();
        Response.ContentType = flupld_xmlfile.PostedFile.ContentType;
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(output));
        Response.WriteFile(output);
        Response.Flush();

        //Delete the original (input) and the decrypted (output) file.
        File.Delete(input);
        File.Delete(output);

        Response.End();
    }

    private void Decrypt(string inputFilePath, string outputfilePath)
    {
        string EncryptionKey = "MAKV2SPBNI99212";
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);
            using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
            {
                using (CryptoStream cs = new CryptoStream(fsInput, encryptor.CreateDecryptor(), CryptoStreamMode.Read))
                {
                    using (FileStream fsOutput = new FileStream(outputfilePath, FileMode.Create))
                    {
                        int data;
                        while ((data = cs.ReadByte()) != -1)
                        {
                            fsOutput.WriteByte((byte)data);
                        }
                    }
                }
            }
        }
    }


}



0 comments:

Post a Comment