【问题标题】:What is the most secure python "password" encryption什么是最安全的python“密码”加密
【发布时间】:2010-11-05 20:04:16
【问题描述】:

我正在制作一个有任务和解决方案的小网页游戏,解决方案是通过在完成任务后输入给用户的代码来解决的。为了获得一些安全性(防止作弊),我不想以纯文本形式存储游戏生成的代码。但是由于我需要能够在玩家完成任务后给他代码,所以我无法对其进行哈希处理,从那时起我就无法检索它。

那么使用 python 加密/解密某些东西最安全的方法是什么?

【问题讨论】:

  • 如果你以纯文本形式存储这些代码,你将如何作弊?
  • 只是因为有人用代码获取了数据库表...
  • 那不是作弊,而是黑客攻击。

标签: python security encryption


【解决方案1】:

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

这就是为什么散列更有用的原因,因为它是一种单向过程 - 即使有人知道您的密码散列,他们也不知道他们必须输入的纯文本来生成它(没有大量的蛮力)

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

也许想办法让窃取密码的吸引力不如实际玩游戏?例如,有一个游戏(我不记得是什么了),如果你使用了级别跳过作弊,你会进入下一个级别但它没有将其标记为“完成”,或者你可以跳过这个级别但没有得到任何积分。或者看看Project Euler,你可以做任何级别,但只有输入答案才能获得积分(并且计算出答案是游戏的全部重点,所以作弊会破坏游戏的玩法)

如果你真的很偏执,你可以可能使用非对称加密,你基本上用key A加密一些东西,你只能用key B阅读它..

我想出了一个类似的概念来使用 GPG 加密(流行的非对称加密系统,主要用于电子邮件加密或签名)to secure website data。我不太确定这将如何应用于保护游戏级密码,正如我所说,你需要非常偏执才能考虑到这一点..

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

【讨论】:

  • 我在很大程度上同意你的看法,这就是我最终的结果。我也在想,如果我让它“不可能”进行 sql 注入和类似的事情,那么以纯文本形式存储级别密码是没有问题的,因为没有人应该能够将它们取出来,但如果他们把它们取出来,他们可以毫无问题地在游戏中“运行”并成为赢家......所以我认为为了安全起见,一些加密不会受到伤害。
  • 而且 GPG 加密解决方案似乎有点偏执是的 :)
【解决方案2】:

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

当给某人一个代码时,您可以执行以下操作以确保实际上安全。

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

(2) 给他们字符串。

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

一次。

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

【讨论】:

  • 正如问题所说,哈希不好,因为他必须能够告诉玩家密码
  • @Adrian:好点。但是,我认为这个问题是有缺陷的。或者,这不是真正的安全,在这种情况下,加密并没有多大帮助。
  • 有另一个帖子但被删除了,我认为这是一个不错的主意:Generate the hash of a string in the from username+"mygame"+level (也许还添加一种提高安全性的盐?)我不知道是谁发布并随后删除了它,但我认为这是一个不错的方法。
  • @Adrian :我没有看到告诉密码的问题。如果用户要求,删除旧的,创建一个新的并散列它......
【解决方案3】:

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

至于加密,不妨试试pyDes

【讨论】:

    【解决方案4】:

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

    选择一个cipher 并完成它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2013-02-11
      • 2011-01-20
      • 2016-02-06
      • 2012-06-23
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多