Я думаю, вы неправильно понимаете возможности, предоставляемые шифрованием.
Пока программа выполняется на ненадежном хосте, невозможно гарантировать что-либо.
Самое большее, вы можете сделатьэто трудно (шифрование, обфускация кода) или чрезвычайно сложно (самоизменяющийся код, обнаружение отладки / перехвата), чтобы кто-то взломал код, но вы не можете предотвратить взлом.А с Интернетом он будет доступен для всех, как только его взломает один человек.
То же самое относится и к предотвращению вмешательства пользователя в конфигурацию.Каким бы ни был метод (CRC, Hash -> между прочим, шифрование не предназначено для предотвращения взлома), все еще возможно выполнить его реинжиниринг при наличии достаточного времени и средств (и мотивации).
Единственный способ гарантироватьнетронутая конфигурация будет хранить его где-то под контролем ВАС (сервер), подписывать его (асимметрично) и заставлять программу проверять подпись.Но даже тогда это не помешает кому-то прийти с патчем, который позволит вашей программе работать с предоставленным пользователем (без знака) файлом конфигурации ...
И вы знаете худшее из этого?Люди, вероятно, предпочтут взломанную версию, потому что освобожденная от бремени всех этих мер "безопасности", она будет работать быстрее ...
Примечание: да, это незаконно, но давайте прагматично ...
Примечание: что касается мотивации, чем умнее вы защищаете программу, тем привлекательнее она для хакеров -> это для них как головоломка для мозга!
Итак, как вы предоставляете защищенную услугу?
- Вам нужно доверять человеку, который выполняет программу
- Вам нужно доверять человеку, который хранит конфигурацию
Это может быть сделано только в том случае, если вы предлагаете тонкий клиент и выполняете все на сервере, которому доверяете ... и даже тогда у вас будут проблемы с тем, чтобы никто на вашем сервере не нашел дверей, которые выне думал о.
На вашем месте, я бы просто позаботился о том, чтобы обнаружить несанкционированное вмешательство в конфигурацию (относитесь к ней как к враждебной и проверяйте данные, прежде чем запускать что-либо).Ведь вероятность повреждения всего файла одинакова, и если поврежденный файл конфигурации означал испорченную клиентскую машину, то было бы чертовски дорого:)