当新用户注册到我的站点时,它使用 crypt() 方法,然后将其存储在数据库中。
我想制作一个“我忘记密码”页面,用户可以通过邮件获取他的密码。
我的问题很简单:例如,我如何将:“$2a$13$Ku2hb./9aA71dPo/E015m.WBs6.RsDC/BL8jbz8dMRrmm0jGNIJRO”转换为“某些用户密码”?
像现在其他网站一样做 - 不要提供找回密码的方法。相反,提供一种重置密码的方法。
当用户单击“我忘记了密码”时,向他们发送一个链接,他们可以使用该链接重置密码。设置链接有效期的到期日期。如果您想格外小心,请在之后发送一封电子邮件,确认密码刚刚重置,并提供一个链接,以防用户自己实际上并没有这样做。
你不能,因为crypt()
它不是一个加密函数,它是一个单向哈希函数。
注意:没有解密函数,因为 crypt() 使用单向算法。
无论如何,您不应该做您所描述的事情。如果攻击者可以访问某人的电子邮件,并且每个网站都应请求以明文形式向用户发送“丢失的密码”,那么该攻击者可以获得更多密码。
您应该让用户在证明其身份(可能通过回答问题)并拥有该电子邮件后输入新密码。
crypt() 函数使用单向加密,这意味着没有 decrypt() 函数。
基本上你有两个选择:
1.实现自己的加密方法,以后可以解密-不推荐-
2.改为实施“重置密码”