Python 加密/加密在本地、internet非访问程序中是否安全?

Python 加密/加密在本地、internet非访问程序中是否安全?,python,python-3.x,encryption,cryptography,save,Python,Python 3.x,Encryption,Cryptography,Save,我正在用Python创建一个基于文本的冒险游戏。游戏不会(也没有理由)访问互联网。创建保存文件时,我希望安全地加密和存储该文件。我将获取所有要保存的数据,通过一些加密函数运行它,并创建一个文本文件来存储该加密函数的输出。该文件将存储在播放器的本地计算机存储器(硬盘、用户文档、用户桌面等)上 我的问题是:有没有办法在程序中创建一个几乎不可破解(同时可解密)的加密函数?任何本地加密(即使在Python之外)都能“真正”安全吗?想想看/基于我对密码学的知识,我会说这是不可能的,但我以前就错了 我知道我

我正在用Python创建一个基于文本的冒险游戏。游戏不会(也没有理由)访问互联网。创建保存文件时,我希望安全地加密和存储该文件。我将获取所有要保存的数据,通过一些加密函数运行它,并创建一个文本文件来存储该加密函数的输出。该文件将存储在播放器的本地计算机存储器(硬盘、用户文档、用户桌面等)上

我的问题是:有没有办法在程序中创建一个几乎不可破解(同时可解密)的加密函数?任何本地加密(即使在Python之外)都能“真正”安全吗?想想看/基于我对密码学的知识,我会说这是不可能的,但我以前就错了

我知道我可以创建本质上是混淆的伪密码,但很明显,这很容易破解。另外,我知道大多数人都不会费心或不知道如何编辑保存文件,但也不需要有太多知识的人来做我在下面一段中所说的事情(如果个人有足够的动机,大多数骗子都是这样)

我想要加密保存文件的原因是,如果不加密它,只需编辑(未加密的)保存文件就很容易欺骗游戏。即使对文件进行加密,也会使加密算法在python代码中清晰可见;python不需要编译成可执行文件,因此原始/自然python代码完全适用于任何只查看游戏内容的人

我非常怀疑这样的安全加密是否可能,但如果可能的话,请解释如何将其合并到Python中,如果可能,请提供一些示例Python代码(如果Python可能的话)。

实现这一点没有安全(如加密安全)的方法。正如前面的评论所说:您的程序必须能够再次解密文件,因此必须具备如何解密文件的知识

然而,你可以提高作弊者需要跨越的门槛。最简单的方法是对文件进行编码而不是加密。这可以是
base64
,甚至可以是简单的
gzip
。您的用户需要使用额外的工具,而不仅仅是使用文本编辑器

其他一切都需要你的创造力。您可以使用模糊代码来获取加密密钥,比如python源文件的散列,或者其他任何东西。然后,作弊者需要使用python调试器,这增加了所需的知识


但问题依然存在:如果你不在线玩,你的用户会欺骗谁?

要保证好的加密安全,密钥(只有密钥)必须是安全的。 但是,如果应用程序无法从其他地方检索密钥,则必须将其存储在自己的数据中,或者在每次需要时生成密钥。这是不安全的。这就像把你家的钥匙放在外面的门垫下面

因此,模糊处理是最好的选择。这取决于你的公众有多老练

使用标准库中的一个压缩模块压缩一个保存文件,然后在将数据写入磁盘之前切断头文件,这会使随意查看的人望而却步,因为它看起来像没有识别头的随机数据。但是,如果他们能够阅读并理解程序的源代码,他们就可以很容易地使文本再次可读


另一种方法是不处理savefile,而是创建savefile内容的校验和(比如SHA1)并将其存储在其他地方。拒绝打开内容与校验和不匹配的保存文件。同样,任何有能力并且愿意检查程序源代码的人都可以“破坏”这种保护。

您可能希望能够在某个时候解密保存文件,在这种情况下,无论加密多么复杂和安全,您的代码都将确切地包括如何解密它。你可能解决了完全错误的问题。用户作弊真的重要吗?如果是这样的话,简单的模糊处理(例如base64)真的足以阻止大多数人吗?这是jonrsharpe试图告诉你的一个例子。如果这个程序没有连接到互联网,那么用户将欺骗谁?他自己