(Повторно изложив несколько сокращенную версию моего комментария в качестве ответа, поскольку он получил несколько голосов, и я совершенно уверен, что этот является ответом.)
Вы столкнулись с тем жепроблема, связанная с кино и игровой индустрией, и ответ таков: лучшее, что вы можете сделать, - это сделать трудным для пользователя, чтобы изменить файл;Вы не можете сделать это невозможным.Ключ дешифрования должен обязательно находиться где-то в вашем коде (или в оборудовании, если вы также производите оборудование), где его можно получить с помощью обратного инжиниринга.Вы также можете зашифровать ключ, но тогда второй ключ должен быть сохранен в вашем коде, и так далее.Вы получите аналогичную проблему, если решите сохранить хеш файла в своем коде и использовать его для проверки того, что файл не был подделан, потому что тогда кто-то может изменить хеш внутри вашего исполняемого файла (Edit: или просто изменитькод, чтобы полностью пропустить проверку хеша).
Как уже упоминалось @limc, вы можете воспользоваться какой-то центральной схемой проверки, со всеми проблемами и враждебностью, которые они приносят.Я думаю, что предложение @Mr Jacques - ваш лучший вариант, если вам действительно не нужно, чтобы он был на 100% защищен от взлома (в этом случае я думаю, что у вас есть большие проблемы), так как он будет сдерживать подавляющее большинство пользователей (пока кто-то не опубликуеттрещина то есть ...)