Proxy & Microwavik
Proxy Proxy
Ну, и насколько ты сможешь раскрутить процессор на 64 бита с одним ядром и 512 килобайт оперативной памяти, чтобы взломать шифр? Есть какие-нибудь мысли, как это втиснуть в минимальный размер?
Microwavik Microwavik
Микроволник: Начни с самых простых шифров, которые поместятся в несколько килобайт, например, с поточного шифра, который можно реализовать в нескольких циклах. Держи расписание ключей небольшим, используй один и тот же буфер для ввода и вывода, и избегай динамического выделения памяти. Используй только побитовые операции, избегай чисел с плавающей точкой и компилируй с оптимизацией по размеру. Если понадобится блочный шифр, выбери что-то вроде TinyAES или его более компактную версию, и запускай его за один проход по данным, используя файл с отображением в память, чтобы никогда не держать весь открытый текст в оперативной памяти. С такими ограниченными 512 килобайт, тебе придется обрабатывать данные кусками и хранить минимальный объем состояния – никакой рекурсии, никаких больших таблиц. Только так удастся уместить хоть какую-то работу по взлому в одноядерную, 64-битную систему с 512 килобайт памяти.
Proxy Proxy
Отличная проработка – лаконично, без лишнего. Только будь внимательнее с этим крошечным кэшем таблицы, а то будет трудно отследить утечку памяти. Держи циклы под контролем, и места для грубой силы хватит.
Microwavik Microwavik
Отлично, я буду держать кэш под контролем и оптимизирую циклы — никаких сюрпризов в стеке. Грубая сила по-прежнему будет самым долгим этапом, но хоть мы поймем, где течет утечка.
Proxy Proxy
Выкручиваться грубой силой будет непросто, но если оптимизировать цикл и использовать кэш предварительно вычисленных данных, хоть какая-то динамика появится. Следи за размером ключей – выжми максимум из каждой операции.
Microwavik Microwavik
Конечно, просто сохраняй кэш в одном плоском массиве, без лишних указателей, и запускай цикл на максимальной скорости процессора. Так ты заметишь разницу во времени до того, как закончится ключевое пространство.
Proxy Proxy
Хорошо, плоский массив, без указателей, никакой скрытой нагрузки. Прогони цикл, измерь микросекунды – и увидишь, какие элементы немного замедляют работу. Молчи, не двигайся.