Сейчас на форуме: vsv1 (+5 невидимых)

 eXeL@B —› Вопросы новичков —› тупой ксор
Посл.ответ Сообщение


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 16 февраля 2016 23:47
· Личное сообщение · #1

имеются строки, зашифрованные таким образом:
Code:
  1.   short x = 111;
  2.  
  3.   for (int i = 0; i < stroka.Length; i++) {
  4.     stroka[i] ^= x >> 8;
  5.     x = (+ stroka[i]) * 1234 + 5678;
  6.   }


вопрос - как их расшифровать назад?
целый день туплю, ничего кроме брута в голову не лезет.




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 16 февраля 2016 23:58
· Личное сообщение · #2

-=AkaBOSS=- пишет:
целый день туплю, ничего кроме брута в голову не лезет.

вспоминаем математику и решаем.
stroka[i] ^= x >> 8; - она обратна сама себе ( почитай вики )
Следовательно надо подобрать правильный X ->
Code:
  1.   short x = 111;
  2.  
  3.   for (int i = 0; i < stroka.Length; i++) {
  4.     stroka[i] ^= x >> 8; //сразу расшифровываем
  5.     x = (+ stroka[i] ^ x >> 8 ) * 1234 + 5678; // подставляем нерасшифрованную строку в вычисление x
  6.   }


| Сообщение посчитали полезным: igorca, -=AkaBOSS=-


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 17 февраля 2016 00:15
· Личное сообщение · #3

ндя, вот это я знатно тупанул
все пытался разбирать в обратном порядке, но упирался в отсутствие конечного значения х
надо больше спать, видимо)


 eXeL@B —› Вопросы новичков —› тупой ксор
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати