Во-первых, вы должны заметить, что если данные находятся в локальной файловой системе, и ваше приложение может их читать и записывать, то определенный пользователь всегда сможет их изменить ... возможно, не легко, но тем не менее возможно .
Тем не менее, есть несколько вариантов, которые вы можете рассмотреть, включая (но не ограничиваясь):
- шифрование данных с помощью ключа, определенного в вашей сборке: довольно безопасно, если у пользователя нет навыков программирования, но опытный пользователь может разобрать ваше приложение, чтобы найти ключ. Запутывание может усложнить извлечение ключа, но не невозможное.
- с использованием изолированного хранилища : я не уверен, зашифрованы ли данные или нет, но, по крайней мере, их нелегко найти, спрятать в глубокой иерархии папок ... Не так безопасно для пользователя однако знает, где искать
- запись данных в двоичном формате, что затрудняет чтение или изменение для неопытного пользователя
- использование части собственного кода для шифрования данных: аналогично первому варианту, но собственную DLL сложнее разобрать, чем сборку .NET, поэтому для поиска ключа требуется больше навыков
Опять же, все эти подходы не являются пуленепробиваемыми: если ваша программа может получить доступ к данным, опытный пользователь всегда может выполнить обратный инжиниринг и сделать то же самое ...