【问题标题】:MD5 with salt in PHP and JavaScript在 PHP 和 JavaScript 中加盐的 MD5
【发布时间】:2015-07-04 21:23:23
【问题描述】:

我需要 php 和 javascript 中的通用散列方法,例如 MD5 或如果不是 MD5,则使用 salt,但要从 php 和 javascript 生成相同的结果。

我想做的是,我有一系列问题要问用户,用户必须回答它们,但是为了快速并避免延迟从服务器检查用户答案,我还想加载回答问题并在用户回答问题时在 javascript 中匹配它们。现在我需要从 php 服务器中获取散列的答案,当我将它们与用户的答案进行匹配时,我会对用户的答案进行散列并将其与来自服务器的散列​​答案进行匹配。

有可能吗?

【问题讨论】:

  • 当然可以。还有什么?
  • @ArtjomB。谢谢,你知道吗?

标签: javascript php security hash md5


【解决方案1】:

这只不过是混淆了你正在做的事情。大概你想防止用户作弊。这样做并依赖客户端代码将无法安全运行。

当客户端浏览器收到答案哈希和相应的盐时,用户可以简单地暴力破解正确答案。可能答案的数量是如此之少,以至于用户可以用接收到的盐尝试所有可能的答案,并通过比较哈希值找到匹配的答案。

既然这不过是混淆,为什么要让它变得复杂呢?只需使用 Base 64 或类似的东西对您的正确答案进行编码。这将防止大多数用户作弊。如果您确实想确保没有用户可以作弊,则需要将选定的答案发送到服务器。


如果你真的想继续你的计划,目前最快的 JavaScript MD5 哈希是SparkMD5,并不是说你需要速度适合你的用例。 CryptoJS 也实现了 MD5,PHP 有 md5() 函数。所有这些实现都是兼容的。您只需确保使用相同的编码(字符编码和 Hex/Base64)。

带有盐的构造可能是md5(answer || salt),其中|| 表示连接。这并不是真正的保存,但无论如何对你的情况都没有关系。

【讨论】:

  • 谢谢,你是对的。它并不完全安全,但我不想让他们太明显。而且因为这些问题会有时间限制,所以他们没有足够的时间去挖掘那么深。
猜你喜欢
  • 2014-05-03
  • 2010-11-30
  • 2013-08-29
  • 2011-04-05
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 2019-10-02
相关资源
最近更新 更多