private bool checkLicense()
{
string str = "";
try
{
int j = m_sLicenseKey.Length - 1;
for (int i = 0; i <= j; i += 2)
{
long l = LongType.FromString(String.Concat("&H", m_sLicenseKey.Substring(i, 2)));
str = String.Concat(str, StringType.FromChar(Strings.Chr((int)(l ^ 15))));
}
if (StringType.StrCmp(str.Substring(0, 4), "EDIT", false) != 0)
{
bool flag = false;
return flag;
}
if (IntegerType.FromString(str.Substring(6, 2)) < 40)
{
flag = false;
return flag;
}
return true;
}
catch (Exception e)
{
ProjectData.SetProjectError(e);
flag = false;
ProjectData.ClearProjectError();
return flag;
}
}
{
string str = "";
try
{
int j = m_sLicenseKey.Length - 1;
for (int i = 0; i <= j; i += 2)
{
long l = LongType.FromString(String.Concat("&H", m_sLicenseKey.Substring(i, 2)));
str = String.Concat(str, StringType.FromChar(Strings.Chr((int)(l ^ 15))));
}
if (StringType.StrCmp(str.Substring(0, 4), "EDIT", false) != 0)
{
bool flag = false;
return flag;
}
if (IntegerType.FromString(str.Substring(6, 2)) < 40)
{
flag = false;
return flag;
}
return true;
}
catch (Exception e)
{
ProjectData.SetProjectError(e);
flag = false;
ProjectData.ClearProjectError();
return flag;
}
}
for (int i = 0; i <= j; i += 2)
{
long l = LongType.FromString(String.Concat("&H", m_sLicenseKey.Substring(i, 2)));
str = String.Concat(str, StringType.FromChar(Strings.Chr((int)(l ^ 15))));
}这一段既是加密算法,又是解密算法。算两遍就会得到原始值。
string str = "";
int j = m_sLicenseKey.Length - 1;
for (int i = 0; i <= j; i += 2)
{
long l = LongType.FromString(String.Concat("&H", m_sLicenseKey.Substring(i, 2)));
str = String.Concat(str, StringType.FromChar(Strings.Chr((int)(l ^ 15))));
}
// 下面解密:
string str2 = "";
j = str.Length - 1;
for (int i = 0; i <= j; i++)
{
int l = str[i] ^ 15;
str2 = String.Concat(str2, l.ToString("X"));
}
Console.WriteLine(str2);