Это действительно сложный вопрос.
Я никогда не реализовывал такую вещь, но вот простое приближение.
Ваша основная проблема связана с тем, что хакеры гадают, что делает ваше приложение, а затем отправляют свои результаты.
Ну, во-первых, если бы ваше приложение не имело большого успеха, я бы не волновался. Делать это очень сложно.
Шифрование не поможет с проблемой. Видите ли, шифрование помогает защитить данные на своем пути, но не защищает ни одну из сторон транзакции до того, как данные будут зашифрованы (именно в этом и заключается основная уязвимость). Так что если вы зашифруете точно, данные останутся конфиденциальными, но это не будет безопасно.
Если вы действительно беспокоитесь об этом, я предложу запутать код и спроектировать систему оценок таким образом, чтобы не было совершенно очевидно, что происходит. Здесь мы можем позаимствовать некоторые вещи из протокола шифрования. Вот пример:
- Допустим, счет - это некое число m
- Вычислите какой-нибудь вид проверки счета (например, CRC или любую другую систему, которую вы видите ногами. Фактически, если вы просто придумали такую, какой бы хромой она ни была, она будет работать лучше)
- Получите закрытый ключ пользователя (D) с вашего удаленного сервера (очевидно, через безопасное соединение). Ты единственный, кто знает этот ключ.
- Вычислить X = m ^ D mod n (n является открытым модулем вашего алгоритма открытого / секретного ключа) (то есть зашифровать его: P)
Как видите, это просто запутывание другого рода. Вы можете идти по этому пути столько, сколько захотите. Например, вы можете найти два ближайших простых числа в X и использовать их для шифрования CRC, а также отправить его на сервер, чтобы получить CRC и счет отдельно и с разными схемами шифрования.
Если вы используете это в сочетании с запутыванием, я бы сказал, что это будет трудно взломать. Тем не менее, даже это может иметь обратную силу, все зависит от интереса и способностей хакера, но ... серьезно, какой урод требует столько усилий, чтобы изменить свои результаты в игре? (Если не WoW или что-то)
Последнее замечание
Обфускатор для .NET
Обфускатор для Delphi / C ++
Обфускатор для ассемблера (x86)