首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加密/加密技术在本地的、不访问互联网的程序中可以安全吗?

加密/加密技术在本地的、不访问互联网的程序中可以安全吗?
EN

Stack Overflow用户
提问于 2016-03-30 16:40:03
回答 2查看 179关注 0票数 2

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

我的问题是:我是否可以在程序中创建一个加密功能,而实际上是无法破解的(同时可以解密)?任何本地加密(甚至在Python之外)是否都是“真正”安全的?根据我的密码学知识,我会说这是不可能的,但我以前就错了。

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

我想加密保存文件的原因是,不加密它,它是,所以很容易通过编辑(未加密的)保存文件来欺骗游戏。即使对文件进行加密,在python代码中,加密算法也是显而易见的;python不需要编译成可执行文件,因此原始/自然python代码对于任何只看游戏内容的人来说都是完全正确的。

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

EN

回答 2

Stack Overflow用户

发布于 2016-03-31 21:24:34

没有实现这一目标的安全(如密码安全)的方法。正如评论已经说过的那样:你的程序必须能够再次解密文件,所以如何解密它的知识必须在那里。

然而,你可以提高作弊者需要过关的标准。最简单的方法是只对文件进行编码,而不是加密它。这可以是base64,甚至是一些简单的东西,如gzip。您的用户需要使用额外的工具,而不是仅仅使用文本编辑器。

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

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

票数 0
EN

Stack Overflow用户

发布于 2016-03-31 23:13:12

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

所以混淆是你所希望的最好的。这取决于你的公众有多成熟。

使用标准库中的一个压缩模块对保存文件进行压缩,然后在将数据写入磁盘之前切断标头,这将击败普通的旁观者,因为它看起来像没有标识头的随机数据。但是,如果他们能够阅读和理解程序的源代码,他们可以很容易地使文本可读性再次。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36314815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档