Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Obfuscator tool
Message
De
18/05/2007 09:06:18
 
 
À
18/05/2007 02:29:33
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Titre:
Versions des environnements
Environment:
C# 1.1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
MS SQL Server
Divers
Thread ID:
01226593
Message ID:
01226667
Vues:
15
>Hi,
>Any recommendation of .NET obfuscator tool for .NET 1.1 and 2.0?
>
>Thank you

Hi John,

I have used the following routines for obfuscation. Note that this is obfuscation only, not encryption and is therefore not inherently secure. I obtained the (De)Hex method code off the web and wrote the wrapper routines myself. Use them if they're helpful.

Bill
	/*=======================*/
	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();
		}
William A. Caton III
Software Engineer
MAXIMUS
Atlanta, Ga.
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform