【问题标题】:Is there a simpler encryption/decryption hash algorithm out there?那里有更简单的加密/解密哈希算法吗?
【发布时间】:2016-01-26 15:53:13
【问题描述】:

我在这个很棒的论坛和其他几个地方读到了用 md5 解密是多么困难,如果不是不可能的话。

不幸的是,我使用 md5 对我们用户的密码进行哈希处理:

 // hash to sanitize the input further
$password = md5($password);

现在,我有点麻烦,因为忘记密码的用户无法使用我们的恢复密码功能。

当他们尝试恢复密码时,他们会收到对他们无用的加密密码,因为他们无法使用它。

考虑到解密 md5 哈希有多么困难,几乎不可能,有没有人可以建议我尝试的更简单的加密/解密机制?

现在几乎在热水中。

【问题讨论】:

  • 不,不,不!您应该使用更安全的散列算法(例如 PHP 的内置 password_hash()/password_verify() 函数)来保护密码,这是无法逆转的;并且永远不要将密码发回给用户......密码恢复应该向他们发送一个限时令牌,允许他们在不输入旧值的情况下重置密码
  • 你真的不应该使用MD5 password hashes,你真的应该使用PHP的built-in functions来处理密码安全。如果您使用的 PHP 版本低于 5.5,则可以使用 password_hash() compatibility pack
  • 让我这么说吧,30 多年来 桥下流了 很多 的水;那是“YEARS”,360 多个月。不要使用 MD5 来存储密码。除非您希望最终落入同一条水中,否则停止您正在使用的东西如果它打算在网络上上线。

标签: php encryption hash


【解决方案1】:

不幸的是,我使用 md5 来获取我们用户的密码

不幸是怎么回事?这就是你应该做的。用户密码应隐藏在单向哈希后面,并且任何人都无法恢复。甚至不是由您作为系统所有者/管理员。

忘记密码的用户无法使用我们的找回密码功能

应该没有这样的“恢复密码功能”。它被称为“重置密码功能”。您可以以管理方式更改用户的密码。但是你应该永远 能够阅读它。

当他们尝试恢复密码时,他们会收到对他们无用的加密密码,因为他们无法使用它。

但是攻击者可以使用它。这就是为什么你一开始就不应该把它发送给任何人

有没有人可以建议我尝试的更简单的加密/解密机制?

没有比以下更简单的了:

md5($password)

这是一个函数调用。五次击键。 使用起来真的很简单。既然你已经在使用它了,那就太好了。

一旦您停止发布密码哈希,您就可以开始处理用户密码(至少据我们所知)。继续伟大的工作!有 的服务不会 正确地隐藏用户密码。感谢您至少尝试一下。


注意:正如用户所指出的(这些天比我更熟悉PHP的用户),而直接使用md5()朝着正确方向迈出的一步,这不是你能做的最好的。

相反,看看 PHP 内置的 password handling functionality。 (或者,如果您使用的是旧的 5.5 之前的 PHP 版本,则有一个 compatibility pack 维护相同的功能。)Jay Blanchard 写了一篇关于其使用的方便文章 here

概念是相同的,通过单向哈希来隐藏用户密码。但是工具已经有了很大的发展。

【讨论】:

  • 嗯,使用散列来隐藏密码并不不幸,但使用 md5 代替密码散列 api 是不幸的。 :)
  • 你真的不应该使用MD5 password hashes,你真的应该使用PHP的built-in functions来处理密码安全。如果您使用的 PHP 版本低于 5.5,则可以使用 password_hash() compatibility pack
  • @David 等人,首先感谢大家的回复。其次,当我说不幸的是,我使用了 md5 时,我并不是在暗示我不应该使用。我只是建议我在实现方面使用了一种更简单的方法。因为我使用了 md5,所以我发现解密密码更加困难。如果我使用了另一种可能更难实现的加密方法,但能够使用相同的苛刻方法解密的回报将非常值得付出努力。这就是我所暗示的。
  • 另外,有些php程序员表现得像他们一样完美,他们并没有像我一样开始学习php,这是相当可悲的。每次我发布与 php 相关的问题时,它们都会给我大量降级。这并没有改变我正在学习的事实,我正在努力从经典的 asp 过渡到 asp.net,再到现在的 php。
  • @ChidiOkeh:"the reward of being able to decrypt " - 这不是奖励,这是一个错误。还有一个明显的安全漏洞会暴露用户数据。
猜你喜欢
  • 2013-07-12
  • 1970-01-01
  • 2016-10-29
  • 2011-10-10
  • 1970-01-01
  • 2023-03-20
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多