2009-06-25 39 views
5

我正在制作一个带有任务和解决方案的小游戏,解决方案是通过在任务完成后输入给用户的代码来解决的。为了有一定的安全性(防止作弊),我不想以纯文本形式存储游戏中产生的代码。但是因为我需要能够在玩家完成任务时给予玩家代码,所以我无法对其进行哈希处理。什么是最安全的python“密码”加密

那么什么是最安全的方式来加密/解密使用Python的东西?

+0

看起来这里:http://stackoverflow.com/questions/172486/what-pure-python-library-to-use-for- aes-256-encryption – 2009-06-25 12:54:42

+2

如果您以纯文本格式存储这些代码,您将如何作弊? – innaM 2009-06-25 13:02:17

+0

只是因为有人拿着数据库表的代码... – espenhogbakk 2009-06-25 14:51:27

回答

5

如果您的脚本可以解码密码,那么有人可以破解您的服务器。加密仅在有人输入密码才能解锁时才真正有用 - 如果它仍然未锁定(或者脚本有解锁密码),则加密是毫无意义的

这就是为什么哈希更有用,因为它是一个一种方式 - 即使有人知道你的密码散列,他们不知道他们必须输入的明文(没有大量的蛮力)

我不会担心保持游戏密码为纯文本。如果您担心保护它们,请修复可能的SQL注入/等等,确保您的Web服务器和其他软件是最新的并且配置正确等。

也许想到一种方法来减少窃取密码的难度,而不是实际玩游戏?例如,有一个游戏(我不记得它是什么),如果你使用等级跳过作弊,你进入了下一个等级,但它没有标记为“完整”,或者你可以跳过等级但没有得到任何分数。或者看一下欧拉项目,你可以做任何关卡,但是如果你输入了答案,那么你只能得到积分(并且计算出答案是整个游戏的重点,所以作弊会打败游戏)

如果你真的偏执,你可以可能使用非对称加密,在那里你基本的东西进行加密与key A,你只能用key B读吧..

我想出了用GPG加密的类似的概念(流行的不对称加密系统,主要用于邮件加密或签名)to secure website data。我不太清楚这将如何适用于确保游戏级别的密码,正如我所说,你需要是真的偏执甚至考虑这个..

总之,我会说存储密码纯文本,并将您的安全问题集中在其他地方(Web应用程序代码本身)

2

如果是网页游戏,你不能存储代码服务器端并在完成任务时将它们发送给客户端吗?你的游戏的架构是什么?

至于加密,也许尝试像pyDes

5

最安全的加密是不加密的。密码应该减少到一个散列。这是一种单向转换,使得密码(几乎)不可恢复。

当给别人一个代码时,你可以做到以下几点:其实安全。 (1)生成一些随机字符串。

(2)给他们的字符串。

(3)保存您生成的字符串的散列。

一次。

如果他们“忘记”了代码,您必须(1)确保他们有权获得代码,然后(2)再次执行该过程(生成一个新代码,提供给他们,保存哈希)

0

你的问题不是很清楚。你想在哪里解密?不管怎样,明文都必须浮出水面,因为你需要玩家最终了解它。

选择一个cipher并完成它。