【问题标题】:Decrypting MySQL password on generating email to inform user of password在生成电子邮件时解密 MySQL 密码以通知用户密码
【发布时间】:2012-05-07 09:12:30
【问题描述】:

我正在实现一个登录脚本,其中包括通过电子邮件向用户发送用户名和密码(存​​储在 MySQL 数据库中)的功能,以防他们忘记了。该脚本的默认行为是发送用户名和密码,即生成一个临时密码。

我想知道是否有办法只通过电子邮件发送当前密码,这样用户就不必重新设置它。目前密码已加密,但我无法弄清楚这是如何完成的。密码格式为:

*2D4CE9DDA883E4FBE985A3439D9DCDCBD88367A0

所以当我尝试发送当前密码时,会发送加密密码。

有没有办法在发送提醒邮件时解密密码,还是我必须保持原样?

谢谢,

尼克

【问题讨论】:

  • 不,不要通过电子邮件发送当前密码 - 这会带来安全风险。无论如何,您都不能(轻松)取消散列值。让他们每次都重置密码。
  • 密码应该是散列,而不是加密。这应该是不可能的。
  • 密码是否加密或加盐/散列?我猜是后者。

标签: mysql encryption passwords


【解决方案1】:

你真的不应该这样做,即使它是可能的(我怀疑)。电子邮件极不安全,用户倾向于重复使用密码:

  1. 用户想出了一个密码并在包括你的网站在内的许多网站上使用它
  2. 您发送了一封忘记密码的电子邮件,其中包含他们的密码
  3. 攻击者 intercepts 该电子邮件,现在在他们使用的每个网站上都有用户密码

只需像其他人一样给他们一个新密码(并鼓励或要求他们在下次登录时更改密码)。

【讨论】:

  • 感谢您的澄清。我会坚持使用默认系统。
【解决方案2】:

密码可能是散列的,而不是加密的。所以不,你不能解密它们。如果它们实际上是加密的,则需要密钥来解密它们。无论如何,散列(很可能是 SHA1)是更安全的方式。还要在这种情况下查看关键字“盐”。

只需为他们生成一个新的临时密码并强制他们在第一次登录后更改它。这是有充分理由的常用方法。不要像一些大型软件公司一样,重视舒适而不是安全。

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2014-01-16
    • 2013-06-24
    • 2015-06-10
    • 2016-09-04
    相关资源
    最近更新 更多