Search this blog

Tuesday, June 9, 2009

Encryption and Decryption Algorithm – ASP.NET, C#

The following code can helps to Encrypt or Decrypt a value based on passing any key code (your own key)

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.Data.SqlClient;

using System.Security.Cryptography;

using System.IO;

using System.Text;


namespace WebApplication1

{

public class KeyGen2

{

public static string DESEnCode(string pToEncrypt, string sKey)

{

pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt);

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

foreach (byte b in ms.ToArray())

{

ret.AppendFormat("{0:X2}", b);

}

ret.ToString();

return ret.ToString();

}

public static string DESDeCode(string pToDecrypt, string sKey)

{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];

for (int x = 0; x <>

{

int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));

inputByteArray[x] = (byte)i;

}

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray()));

}

}

}

To Test the above Algorithm (Encrypt or Decrypt), you can use this method. In this method, I used "!#$a54?3" as Key

public string encryptQueryString(string strQueryString)

{

return KeyGen2.DESEnCode(strQueryString, "!#$a54?3");

}

public string decryptQueryString(string strQueryString)

{

return KeyGen2.DESDeCode(strQueryString, "!#$a54?3");

}

1 comment: