/*=======================*/ public class ObfuscationLib /*=======================*/ { #region Obfuscation Methods /***********************************************************************************************/ public static string DecryptString(string StringToDecrypt, int PreSaltLength, int PostSaltLength) /***********************************************************************************************/ { // Decrypt the String return DeHex(DeSalt(StringToDecrypt, PreSaltLength, PostSaltLength)); } /********************************************************/ public static string DecryptString(string StringToDecrypt) /********************************************************/ { return DecryptString(StringToDecrypt, 0, 0); } /***********************************************************************************************/ public static string EncryptString(string StringToEncrypt, int PreSaltLength, int PostSaltLength) /***********************************************************************************************/ { // Encrypt the String and return it return Salt(Hex(StringToEncrypt.Trim()), PreSaltLength, PostSaltLength); } /********************************************************/ public static string EncryptString(string StringToEncrypt) /********************************************************/ { return EncryptString(StringToEncrypt, 0, 0); } /************************************************************************************/ public static int DecryptIntegerKey(string Key, int PreSaltLength, int PostSaltLength) /************************************************************************************/ { // Decrypt the Key return int.Parse(DeHex(DeSalt(Key, PreSaltLength, PostSaltLength))); } /*********************************************/ public static int DecryptIntegerKey(string Key) /*********************************************/ { return DecryptIntegerKey(Key, 0, 0); } /************************************************************************************/ public static string EncryptIntegerKey(int Key, int PreSaltLength, int PostSaltLength) /************************************************************************************/ { // Encrypt the Key and return it return Salt(Hex(Key.ToString().Trim()), PreSaltLength, PostSaltLength); } /*********************************************/ public static string EncryptIntegerKey(int Key) /*********************************************/ { return EncryptIntegerKey(Key, 0, 0); } /***************************************************************************************/ public static string DeSalt(string StringToDeSalt, int PreSaltNumber, int PostSaltNumber) /***************************************************************************************/ { StringBuilder sb = new StringBuilder(StringToDeSalt); if (PostSaltNumber > 0) sb.Remove(sb.Length - PostSaltNumber, PostSaltNumber); if (PreSaltNumber > 0) sb.Remove(0, PreSaltNumber); return sb.ToString(); } /***********************************************************************************/ public static string Salt(string StringToSalt, int PreSaltNumber, int PostSaltNumber) /***********************************************************************************/ { string strPostSalt = DateTime.Now.Ticks.ToString(); StringBuilder sb = new StringBuilder(); if (PreSaltNumber > 0) sb.Append(DateTime.Now.Ticks.ToString().Substring(0, PreSaltNumber)); sb.Append(StringToSalt); if (PostSaltNumber > 0) sb.Append(strPostSalt.Substring(strPostSalt.Length - PostSaltNumber, PostSaltNumber)); return sb.ToString(); } /******************************************/ public static string DeHex(string hexstring) /******************************************/ { string ret = String.Empty; StringBuilder sb = new StringBuilder(hexstring.Length / 2); for(int i=0; i <= hexstring.Length - 1; i = i + 2) { sb.Append((char)int.Parse(hexstring.Substring(i,2), NumberStyles.HexNumber)); } return sb.ToString(); } /************************************/ public static string Hex(string sData) /************************************/ { string temp = String.Empty;; string newdata=String.Empty; StringBuilder sb = new StringBuilder(sData.Length * 2); for (int i = 0; i < sData.Length; i++) { if ((sData.Length - (i + 1)) > 0) { temp = sData.Substring(i,2); if (temp == @"\n") newdata += "0A"; else if (temp == @"\b") newdata += "20"; else if (temp == @"\r") newdata += "0D"; else if (temp == @"\c") newdata += "2C"; else if (temp == @"\\") newdata += "5C"; else if (temp == @"\0") newdata += "00"; else if (temp == @"\t") newdata += "07"; else { sb.Append(String.Format("{0:X2}", (int)(sData.ToCharArray())[i])); i--; } } else { sb.Append(String.Format("{0:X2}", (int)(sData.ToCharArray())[i])); } i++; } return sb.ToString(); }