Добрый день, уважаемые!
Приглашаю всех поделиться своим опытом по защите программ.
Пишу прогу на заказ, и вот встал перед вопросом — требуют писать защиту (логин/пароль). Прога завязана на интернет, то есть основную массу своей работы делает именно там.
В результате долгих размышлений и прочтения кучи статей пришел к выводу, что:
1. Надо бы юзать крипто (что-то типа RC5).
2. Если не крипто, то хотя-бы CRC32 как вспомогательную вещь при генерации ключа.
3. Прямые проверки типа
if(blabla) {}//Registered;
else {} // Mazafaka
быренько минут за 10 херятся (сам пробовал не раз)
4. Сразу кричать, что введенная информация неверна, негоже.
5. Ну и еще масса мыслей.
И вдруг пришло понимание

, что _ВСЕ_РАВНО_ без прямой проверки где-либо в коде не обойтись (в итоге — смена двух байт в проге и опаньки). Да, раскидаю я проверку по разным частям проги, сделаю таблицу переходов при промежуточных вычислениях, буду это дело в потоках отдельных пускать, буду множить данные неоднократно, чтобы запутать крекера — но все равно сравнение введенного ключа с эталонным(вычисленным из введенного логина) будет!!!
Грустно мне стало, в общем... Суровой защиты не нужно, главное, чтобы на взлом уходило больше недели (во всяком случае чтобы не через 10 минут)...
Поэтому и спрашиваю — отцы, кто уже поимел опыт? Поделитесь, еси не жалко... Не кодом, а алгоритмикой задачи хотя-бы...
И вообще — может стоит открыть новый форум, посвященный защите программ?