Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите с кодом


Автор: zedx 7.7.2008, 10:10
Есть примитивнейший код по дешифровке файла data ключом key:
Код

            unsigned int i, j;
    unsigned int keystart = 16;
    unsigned int keylen = 0x3f8;

    for (i = 0, j = 16; i < handle->datasize; i++) {
        handle->data[i] ^= handle->key[j + 8];
        j++;
        if (j % 8 == 0)
            j += 16;
        if (j >= keylen) {
            keystart = (keystart + 8) % 24;
            j = keystart;        }


немного не знаком с синтаксисом, поэтому подскажите:
 handle->data[i] ^= handle->key[j + 8] каждому значению data[i] присваивается значение key[j + 8] т.е. замена?
j++ это прибавляет к j 1 или 2?
j % 8 == 0 а это вообще не пойму что за условие, j/8=0?
в общем, не пинайте сильно smile

Автор: SteN 7.7.2008, 10:18
a^=b; это  a = a^b;
j++;    это j = j+1;
a%b - остаток от деления a на b.

Автор: zedx 7.7.2008, 10:26
a^b это, наверное, умножение?
a%8=0  -  т.е. деление без остатка?
тогда keystart = (keystart + 8) % 24 - целое от деления на 24?

Автор: bsa 7.7.2008, 10:28
zedx, а "^" - это побитная операция XOR (исключающее "ИЛИ")

Добавлено через 2 минуты и 31 секунду
Цитата(zedx @ 7.7.2008,  10:26)
a%8=0  -  т.е. деление без остатка?
тогда keystart = (keystart + 8) % 24 - целое от деления на 24?

Код
if (a%8 == 0) {
  //сделать что-то если a кратно 8
}

keystart = (keystart + 8) % 24; //присвоить переменной keystart остаток от деления (keystart + 8) на 24

Автор: zedx 7.7.2008, 10:35
Спасибо за помощь.
Ушел портировать код на Delphi и проверять дешифровку smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)