How to use custom encryption and decryption in asp.net(C#)

Earlier in this week I just got a special requirement to implement custom algorithm for string encryption and decryption without using traditional inbuilt functions. In this section I would like to share both of that function to help people like me to get it done in few minutes.

Encrypt Function

public string Encrypt(string Source)
        {
            try
            {
                string strRet = null;
                string strSub = null;
                ArrayList arrOffsets = new ArrayList();
                int intCounter = 0;
                int intMod = 0;
                int intVal = 0;
                int intNewVal = 0;

                arrOffsets.Insert(0, 73);
                arrOffsets.Insert(1, 56);
                arrOffsets.Insert(2, 31);
                arrOffsets.Insert(3, 58);
                arrOffsets.Insert(4, 77);
                arrOffsets.Insert(5, 75);

                strRet = "";

                for (intCounter = 0; intCounter <= Source.Length - 1;
                intCounter++)
                {
                    strSub = Source.Substring(intCounter, 1);
                    intVal =
                    (int)System.Text.Encoding.ASCII.GetBytes(strSub)[0];
                    intMod = intCounter % arrOffsets.Count;
                    intNewVal = intVal +
                    Convert.ToInt32(arrOffsets[intMod]);
                    intNewVal = intNewVal % 256;
                    strRet = strRet + intNewVal.ToString("X2");
                }
                return strRet;

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Decrypt Function

public string Decrypt(string Source)
        {
            try
            {
                ArrayList arrOffsets = new ArrayList();
                int intCounter = 0;
                int intMod = 0;
                int intVal = 0;
                int intNewVal = 0;
                string strOut = null;
                string strSub = null;
                string strSub1 = null;
                string strDecimal = null;

                arrOffsets.Insert(0, 73);
                arrOffsets.Insert(1, 56);
                arrOffsets.Insert(2, 31);
                arrOffsets.Insert(3, 58);
                arrOffsets.Insert(4, 77);
                arrOffsets.Insert(5, 75);

                strOut = "";
                for (intCounter = 0; intCounter <= Source.Length - 1;
                intCounter += 2)
                {
                    strSub = Source.Substring(intCounter, 1);
                    strSub1 = Source.Substring((intCounter + 1), 1);
                    intVal = int.Parse(strSub,
                    System.Globalization.NumberStyles.HexNumber) * 16 + int.Parse(strSub1,
                    System.Globalization.NumberStyles.HexNumber);
                    intMod = (intCounter / 2) % arrOffsets.Count;
                    intNewVal = intVal -
                    Convert.ToInt32(arrOffsets[intMod]) + 256;
                    intNewVal = intNewVal % 256;
                    strDecimal = ((char)intNewVal).ToString();
                    strOut = strOut + strDecimal;
                }
                return strOut;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Now lets test both of the above function.

string strSource = “TechnoThirsty”;
string strInput = Encrypt(strSource);

The output of above string will be some thing like below.

9D9D82A2A0BFAEA8

You can test the same way to decrypt above encrypted string and can see the output same as a source string.

 

 

Leave a Reply