C++加密和解密Lua文件

我有一个用C ++编写的程序(一个小游戏),它从Lua文件中获取配置(它们基本上是程序的模块)。例如,程序从Lua文件中获取其名称,版本以及它可以做什么和不能做什么,以及玩家可以做什么。问题是,当我开始向一些人分发这个小游戏时,他们可以配置Lua文件,这是我不想发生的,所以我考虑加密它们,然后在程序启动时解密它们,但我无法理解如何实际做到以及如何做到。总之,这是一个像我想象的那样简单的任务吗?

我认为应该这样做:用某个程序用特定的加密方法加密Lua文件。将C ++代码编写到程序中,首先解密Lua文件,然后开始阅读它们。这个概念正确吗?加密本身可能尽可能简单,只要它起作用就行。

点赞
用户1073843
用户1073843

是的,基本就是这样。

假设您现在有类似以下的代码:

runLuaFromFile("config.lua");

您可以执行以下操作:

  • 将文本文件“config.lua”加载到内存中(例如,作为字符串)。
  • 解密您的字符串。
  • runLuaFromMemory(myString);

显然,runLuaFromFilerunLuaFromMemory不是真正的函数,它们只是您使用的任何Lua系统的占位符。

2013-11-07 15:15:37
用户107090
用户107090

将预编译的 Lua 文件分发而不是源文件可能对您的需要足够满足。请参见 luac

2013-11-07 16:23:26
用户1818497
用户1818497

使用 luac,我最终成功使所有功能都能正常工作。

我使用以下短语将其与 luac 编译(在其中,“tester.lua”是输出文件的名称,“test.lua”是要编译的文件):

luac -o tester.lua test.lua

无论是否编译,它都可以自动运行。现在的问题是,任何人都可以将编译过的lua文件放在未编译版本的文件中,它仍然可以工作,因为dofile读取普通和编译的lua。你们可以提出什么解决方案,使dofile只读取编译后的lua文件而不是未编译的文件?

2013-11-07 22:09:17