Архив задач

2020 [11] Аутентификация в1

Система аутентификации шифрует пароли особым образом, показанном в виде функции scrambler на языке C++. Зная алгоритм шифрования, вычислите пароль. Фрагмент кода указан ниже.

C++

int swap(int value, int start, int len)

{

  len = len % (sizeof(value) * 8);

  start = start % (sizeof(value) * 8);


  int bits = (INT_MAX >> ((sizeof(value) * 8) - len - 1));

  bits = bits << start;


  int buf = (value >> len) & bits;

  int res = value & bits;

  res = res << len;

  res |= buf;


  int rest = value & ~bits;

  rest = rest & ~(bits << len);


  return rest | res;

}


//////////////////////////////////////////////////////

void scrambler(int keyword)

{

  int res = keyword;

  for (int i = 1; i < 16; i = i * 2)

  {

    for (int j = 0; j < 32 - i; j = j + i * 2)

      res = swap(res, j, i);

  }


  if (res == 1268560121)

    std::cout << "Password is correct\n";

  else

    std::cout << "Password is wrong\n";

}