我一直在用C ++编写一个使用openGL的项目,我希望将当前场景保存到文本文件中。沿着x,y,z及其颜色等方块的简单线条。
我的问题是如何确保文件未被用户更改。我考虑过计算字符串的校验和,并将其包含在文件中。
e.g。校验和,字符串
但是再一次,用户可以修改这些值。
任何建议或者这只是编写一个好的解析器的情况吗?
干杯
答案 0 :(得分:3)
理论上:你不能。
实际上:对其加密并对程序中的密钥进行模糊处理(这是DRM的工作量)
虽然您永远无法阻止确定的用户。为什么用户无法修改它如此重要?
如果您希望用户能够阅读但不修改,请将最后一行设为文件的HMAC和密钥。
答案 1 :(得分:1)
在使用文件内容之前,最好先验证文件的内容,而不是阻止用户更改文件。创建一个能够检测(并修复?)错误的良好解析器。
让用户做他想做的事情,因为一些错误可能是可以解决的。发出警告。使用散列,您将阻止用户执行任何操作。
答案 2 :(得分:0)
您的要求对文件不是用户可修改的要求有多严格?也就是说,您愿意花多少精力来确保用户无法修改文件?该文件是否需要用户可读?如果你真的不希望用户更改文件,可能是某种加密(如果用户不需要能够读取文件)。像trivial XOR encryption scheme这样的东西就足够了。