Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在游戏中保护保存文件不被修改?_Python_Pygame - Fatal编程技术网

Python 在游戏中保护保存文件不被修改?

Python 在游戏中保护保存文件不被修改?,python,pygame,Python,Pygame,目前正在开发一个RPG,我在问如何保护保存的数据,使玩家/用户无法轻松读取或修改它。我的意思是,有计算机和编程经验的人可以修改它,但我不希望lambda用户能够像修改纯文本xml文件那样轻松地修改它 有没有一种方法可以用python做到这一点?只是pickle或cpickle压缩设置为max的配置对象是一个快速简单的选项。只是pickle或cpickle压缩设置为max的配置对象是一个快速简单的选项。您可以使用zlib压缩数据 savedata="level=3" import zlib #

目前正在开发一个RPG,我在问如何保护保存的数据,使玩家/用户无法轻松读取或修改它。我的意思是,有计算机和编程经验的人可以修改它,但我不希望lambda用户能够像修改纯文本xml文件那样轻松地修改它


有没有一种方法可以用python做到这一点?

只是
pickle
cpickle
压缩设置为max的配置对象是一个快速简单的选项。

只是
pickle
cpickle
压缩设置为max的配置对象是一个快速简单的选项。

您可以使用zlib压缩数据

savedata="level=3"

import zlib

#when saving
compressedString = zlib.compress(savedata)

#when loading
loaddata = zlib.decompress(compressedString)

您可以使用zlib压缩数据

savedata="level=3"

import zlib

#when saving
compressedString = zlib.compress(savedata)

#when loading
loaddata = zlib.decompress(compressedString)

泡菜可能太大了。在某些情况下工作会很奇怪。 ZIP允许从存档的不同部分读写数据

尝试使用密码压缩或更改文件的第一个字节以防止正常解包


另外,制作一些不同的变体,并检查尺寸/速度

pickle可能太大。在某些情况下工作会很奇怪。 ZIP允许从存档的不同部分读写数据

尝试使用密码压缩或更改文件的第一个字节以防止正常解包


另外,制作一些不同的变体并检查大小/速度

听起来你需要一个加密库。这将帮助您使用密钥加密或解密文件。好在已经有一个叫PyCrypto的。你可以下载它

要使用它,请在下载后执行以下操作:


它使用AES作为对称密钥密码。首先,我从32个随机选择的ascii字母中生成一个随机键。然后我创建一个初始化向量(iv)。这在加密文件开始时是必要的,以便正确初始化。然后是密码本身,它接受一个密钥、一个操作模式和一个初始化向量。CFB模式(密码反馈模式)只是意味着AES的使用方式将使下一个块在某种程度上依赖于前一个块。Udacity上有几个很棒的视频,而且。

听起来你需要一个加密库。这将帮助您使用密钥加密或解密文件。好在已经有一个叫PyCrypto的。你可以下载它

要使用它,请在下载后执行以下操作:



它使用AES作为对称密钥密码。首先,我从32个随机选择的ascii字母中生成一个随机键。然后我创建一个初始化向量(iv)。这在加密文件开始时是必要的,以便正确初始化。然后是密码本身,它接受一个密钥、一个操作模式和一个初始化向量。CFB模式(密码反馈模式)只是意味着AES的使用方式将使下一个块在某种程度上依赖于前一个块。Udacity上有几个很棒的视频,还有。

你有lambda用户吗?而不是有名字的用户?哼不。。。我指的是没有编程技能的用户。我不知道如何在我的问题x)中指出,典型用户不知道隐藏文件,因此您可以尝试将保存文件设置为隐藏文件。您有lambda用户吗?而不是有名字的用户?哼不。。。我指的是没有编程技能的用户。我不知道如何把它放在我的问题x)好吧,典型用户不知道隐藏文件,所以你可以尝试将保存文件设置为隐藏文件。Shelve是否有压缩配置?Pickle使用纯文本,因此编辑或修改会很容易。协议为1或以上的Pickle/Shelve使用二进制格式,-1协议将使用可用的最高值。如果这是文本语法,那么如果pickle/shelve对象而不是单个值,它仍然可能有点模糊。shelve是否具有压缩配置?pickle使用纯文本,因此编辑或修改将很容易。协议为1或以上的pickle/shelve使用二进制格式,-1协议将使用可用的最高值。如果这是文本语法,那么如果你pickle/shelve对象而不是单个值,它可能仍然有点模糊。这是我的第一个想法。我会试试看。这是我的第一个想法。我试试看。嘿,这听起来是最好的解决办法!我要试试看!:DJust现在对它进行了更新,因此它更加模块化,并且可能更容易合并到更大的程序中。此外,是否需要多次调用write_数据?如果是这样,请告诉我,以便我可以相应地修改。是否可以加密整个文件而不是写入其中?我的意思是,如果我保存游戏状态XML样式,我可以加密该XML文件吗?是的,您可以将该文件作为文本读取,然后将文本作为数据传递到write_数据中。然后,当你想要解密时,解密数据,你就会把XML变成纯文本。嘿,这听起来是最好的解决方案!我要试试看!:DJust现在对它进行了更新,因此它更加模块化,并且可能更容易合并到更大的程序中。此外,是否需要多次调用write_数据?如果是这样,请告诉我,以便我可以相应地修改。是否可以加密整个文件而不是写入其中?我的意思是,如果我保存游戏状态XML样式,我可以加密该XML文件吗?是的,您可以将该文件作为文本读取,然后将文本作为数据传递到write_数据中。然后,当您想要解密时,对数据进行解密,就可以将XML作为明文。