我是Python的新手,作为一个项目,我正在开发一款小游戏。我想确保我的数据以我不会遇到的问题存储的格式存储。
我需要存储的数据对于通过程序生成生成一些游戏内元素是不可或缺的 - 基本上存储这些对象的名称,属性和可能的行为。我不希望玩家能够轻松编辑文件并更改值,以便普通的1级生物突然掉落200万个金币。
我的意图是最终使用Py2Exe或PyInstaller。我考虑过XML,YAML和JSON,但我不确定我应该去哪个方向或者我可能不知道的方向。
我确定如果用户想要他们能够解决这个问题 - 但是对于普通用户来说篡改所述数据不方便的最佳方法是什么?
答案 0 :(得分:2)
这是不可能解决的。您应该使用某种加密或签名方案来确保数据不会与模糊处理一起被篡改,以便无法从密文中轻松提取秘密算法或密钥。
由于这是关于篡改保护而不是数据机密性,我建议您使用数字签名算法。您将生成开发人员私钥+公钥对,使用私钥对静态数据进行签名,并以混淆的方式将公钥放入代码中。
这比假设下的任何加密方案更能保护您的数据操作,因为它操作您的程序比单纯反编译和读取源代码更难
例如,如果您使用对称密码加密该数据并将密钥存储在您的代码中,恶意用户可以从您的代码中推断出算法和密钥并实现它。然后,用户将解密静态数据,对其进行操作并再次对其进行重新加密。你的程序没有被操纵,永远不会知道内容已被更改。
它也必须是非对称的(例如RSA签名或ECDSA),因此在静态数据上使用HMAC会产生与对称加密相同的问题。