Алго реверсивный C#

У меня есть некоторый алгоритм, написанный на C#:

int num3 = 260005;
string text = this.textBox1.Text;
int length = text.Length - 4;
int num5 = ((Convert.ToInt32(text.Substring(4, length)) - 0x7d1) / 2) - 0x7d1;


if (num3 == num5)
{
  do somthing!!!
}

Может кто-нибудь объяснить, как получить правильный ввод для textBox1? Я пытаюсь немного математики, но я застрял.

Я вижу сейчас. Я был смущен с 4 персонажами, которые выбрасывают.

2 ответа

Решение

Вы можете просто изменить свой алгоритм:

string text = "asdf" + (((num3 + 0x7d1)*2) + 0x7d1);

Этот код будет соответствовать тому, что вы ищете... Это потому, что вы отбрасываете первые четыре символа текстового поля, а затем выполняете простое уравнение ((x - 2001) / 2) - 2001 = 260005 следовательно x = 526013:

int num3 = 260005;
string text = "XXXX526013";
int length = text.Length - 4;
int num5 = ((Convert.ToInt32(text.Substring(4, length)) - 0x7d1) / 2) - 0x7d1;
if (num3 == num5)
{
    Console.WriteLine("Match!");
}
else
{
    Console.WriteLine("No Match! {0}", num5);
}
Другие вопросы по тегам