Числа нужно брать большие, чтобы получить криптостойкий результат. Почему мы не сможем восстановить оригинальный номер? В данном алгоритме последовательность получается из одного или нескольких наименее значащих бит каждого из чисел.
Есть еще замечательные алгоритмы, наподобие Blum Blum Shub.
Он просто красив в своем исполнении. Доказано его сведение к Quadratic residuosity problem, что позволяет считать его криптографически стойким. + обладает возможностью получения произвольного элемента последовательности по номеру без вычисления предыдущих.
Скорость только не радует, но все-равно он шикарен.
Не имею отношения ни к организаторам SibirCTF ни к участникам, но могу высказать свое мнение по использованию жюрейки хакердома на региональных соревнованиях.
Дело в том, что формат начисления баллов через SLA, который дает огоньку на крупных турнирах вроде RuCTFE, не очень себя показывает на маленьких турнирах (порядка 10 команд) и особенно с командами новичками.
Проблемы динамики набора баллов и обнулений для команд с низким уровнем подготовки приводят к тому, что они «не понимают что происходит». Старая схема с attack+defence в этом контексте более применима.
Перебирая все 256 вариантов C1'[16], мы натолкнемся гарантированно на такое значение, что P2'[16] будет равно 0x01.
Т.к. любой текст, заканчивающийся 0x01 является корректным — нам придет ответ 200.
Мы это детектируем и найдем I2[16]. Все это для того, чтобы I2 восстановить.
Я про него и говорю. На coursera сейчас стоит сессия с 6 апреля по 22 мая. До этого стояло начало января, до этого ноябрь, до этого сентябрь, до этого июнь и.т.п.
Переносят уже года два.
''.join([chr(int(c,16)) for c in base64.b64decode("NDggNjEgNzAgNzAgNzkgMjAgNDMgNmYgNmQgNzAgNzUgNzQgNjUgNzIgMjAgNTMgNjUgNjMgNzUgNzIgNjkgNzQgNzkgMjAgNDQgNjEgNzkgMjE=").split(' ')])
Подробнее: stackoverflow
Или можно ещё проще:
1 ^ ... ^ n = (n >> 1) & 1 ^ (n&1 ? 1 : n)
Он просто красив в своем исполнении. Доказано его сведение к Quadratic residuosity problem, что позволяет считать его криптографически стойким. + обладает возможностью получения произвольного элемента последовательности по номеру без вычисления предыдущих.
Скорость только не радует, но все-равно он шикарен.
Счет #3818
Номер заказа: 4152018181
Спасибо
Дело в том, что формат начисления баллов через SLA, который дает огоньку на крупных турнирах вроде RuCTFE, не очень себя показывает на маленьких турнирах (порядка 10 команд) и особенно с командами новичками.
Проблемы динамики набора баллов и обнулений для команд с низким уровнем подготовки приводят к тому, что они «не понимают что происходит». Старая схема с attack+defence в этом контексте более применима.
Видимо зависит от разных факторов.
Что-то тут путаница какая-то. Может быть в тройку российских лидеров?
Т.к. любой текст, заканчивающийся 0x01 является корректным — нам придет ответ 200.
Мы это детектируем и найдем I2[16]. Все это для того, чтобы I2 восстановить.
Переносят уже года два.