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