代码之家  ›  专栏  ›  技术社区  ›  espenhogbakk

什么是最安全的python“密码”加密

  •  5
  • espenhogbakk  · 技术社区  · 17 年前

    我正在制作一个有任务和解决方案的小网络游戏,解决方案是在任务完成后输入给用户的代码来解决的。为了安全起见(防止作弊),我不想将游戏生成的代码存储在纯文本中。但是因为我需要能够在玩家完成任务后给他代码,所以我不能散列它,因为我不能检索它。

    4 回复  |  直到 17 年前
        1
  •  5
  •   S.Lott    17 年前

    最安全的加密是不加密。密码应简化为散列。这是一个单向转换,使得密码(几乎)不可恢复。

    当给某人一个代码时,你可以执行以下操作 保护

    (1) 生成一些随机字符串。

    (3) 保存生成的字符串的哈希值。

    一旦

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

        2
  •  5
  •   dbr    17 年前

    如果您的脚本可以解码密码,那么有人入侵您的服务器也可以。只有当有人输入密码解锁时,加密才真正有用——如果密码保持解锁状态(或者脚本有密码解锁),加密就毫无意义

    这就是为什么散列更有用的原因,因为它是一个单向过程——即使有人知道您的密码散列,他们也不知道生成密码所必须输入的纯文本(没有很多暴力)

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

    也许你能想出一个办法,让盗取密码比玩游戏更有吸引力?例如,有一个游戏(我不记得它是什么),如果你使用关卡跳过作弊,你进入下一关卡,但它没有标记为“完成”,或者你可以跳过关卡,但没有得到任何分数。或者看看Euler项目,你可以做任何级别的游戏,但只有在你输入答案的情况下你才能得到分数(而得出答案是整个游戏的重点,因此作弊会挫败游戏的进行)

    如果你真的是偏执狂,你可以 可能地 使用非对称加密,基本上用 key A ,并且您只能使用 key B

    我提出了一个使用GPG加密的类似概念(流行的非对称加密系统,主要用于电子邮件加密或签名) to secure website data

    简言之,我要说的是,将密码存储在纯文本中,并将安全问题集中在其他地方(web应用程序代码本身)

        3
  •  2
  •   Adrian Mester    17 年前

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

    至于加密,可以尝试类似的方法 pyDes ?

        4
  •  0
  •   Unknown    17 年前

    你的问题不太清楚。您希望在哪里进行解密?无论如何,明文必须浮出水面,因为你需要玩家最终知道它。

    cipher 就这样吧。