Сейчас на форуме: asfa, _MBK_, Adler, bartolomeo (+8 невидимых)

 eXeL@B —› Вопросы новичков —› шифровка/дешифровка
Посл.ответ Сообщение

Ранг: 18.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 сентября 2012 19:57 · Поправил: FockuS
· Личное сообщение · #1

есть масив
Code:
  1. {0x0F,0x72,0x3D,0x9E,0x54,0xEA,0xB8,0x3D,0xB4,0xB6}

и алгоритм котоый его шифрует.
Code:
  1. char v5,v6;
  2.  
  3.     *(BYTE *)(a1 + 7) ^= 0xB3;
  4.     v5 = (*(BYTE *)(a1 + 2) >> 1) & 1;
  5.     if ((*(BYTE *)(a1 + 2) >> 5) & 1)
  6.       *(BYTE *)(a1 + 2) |= 2;
  7.     else
  8.       *(BYTE *)(a1 + 2) &= 0xFD;
  9.     if ( v5 )
  10.       *(BYTE *)(a1 + 2) |= 0x14;
  11.     else
  12.       *(BYTE *)(a1 + 2) &= 0xDF;
  13.  
  14.     v6 = (*(BYTE *)(a1 + 2) >> 4) & 1;
  15.     if ((*(BYTE *)(a1 + 2) >> 5) & 1 )
  16.       *(BYTE *)(a1 + 2) |= 0x10;
  17.     else
  18.       *(BYTE *)(a1 + 2) &= 0xEF;
  19.     if ( v6 )
  20.       *(BYTE *)(a1 + 2) |= 0x20;
  21.     else
  22.       *(BYTE *)(a1 + 2) &= 0xDF;

на выходе получаем
Code:
  1. {0x0F,0x72,0x2F,0x9E,0x54,0xEA,0xB8,0xA8,0xB4,0xB6}

с a1[7] все ясно. а вот с a1[2] никак
на месте a1[2] может быть другое значение.
не могу найти алгоритм, чтобы шифровать/дешифровать a1[2] в обе стороны.
есть у кого желание помочь ?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 07 сентября 2012 20:27
· Личное сообщение · #2

if (!(a1[2] & 0xEF)) tmp |= 1 << 5;
if (!(a1[2] & 0xDF)) tmp |= 1 << 4;
Остальные биты так понимаю без разницы



Ранг: 18.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 сентября 2012 22:56 · Поправил: FockuS
· Личное сообщение · #3

да. остальные без разницы

если на входе
Code:
  1. 0x0F,0x73,0xE4,0x92,0x58,0xFE,0xCD,0xBF,0xC0,0xA6,

выход
Code:
  1. 0x0F,0x73,0x35,0x92,0x58,0xFE,0xCD,0x0С,0xC0,0xA6,




Ранг: 18.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 сентября 2012 22:19
· Личное сообщение · #4

больше никому не интересно кроме Veliant ?? жаль.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 09 сентября 2012 22:20 · Поправил: ZaZa
· Личное сообщение · #5

А тебе самому то интересно хоть? Сам то что сделал?

Veliant пишет:
if (!(a1[2] & 0xEF)) tmp |= 1 << 5;if (!(a1[2] & 0xDF)) tmp |= 1 << 4;

А это не ответ?

-----
One death is a tragedy, one million is a statistic.




Ранг: 18.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 сентября 2012 22:31
· Личное сообщение · #6

2 недели смотрю на код и ломаю голову(ниче не лезет), вот и запостил.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 09 сентября 2012 22:33 · Поправил: reversecode
· Личное сообщение · #7

вот вот, хоть бы алго кодирования в нормальный вид привел, а то как собакам с рейса кинул кое как
тяжело нажать Y на a1 и поставить тип char * ?
ну итд по шагам

FockuS пишет:
2 недели смотрю на код и ломаю голову(ниче не лезет), вот и запостил.

может к кашпировскому или коперфильду? они угадывать могут,
а нормальные люди в мат формулы преобразуют

| Сообщение посчитали полезным: ZaZa

Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 10 сентября 2012 04:17
· Личное сообщение · #8

FockuS
256 вариантов всего-навсего, чем 2 недели голову ломать, не проще ли было получить таблицу соответствий и по ней шифровать/дешифровать?


 eXeL@B —› Вопросы новичков —› шифровка/дешифровка
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати