我在下面有一段代码,它回显了一个加了盐的密码:
$pass = rand();
$pass = md5($pass);
$pass = substr($pass, 0, 15);
$pass = md5(md5("g3f".$pass."rt4")); 现在如果我回显$pass,那么它将输出以下内容,例如:
8723d9c8a8b2af798be25fd07ab0ff0a 但我想要做的是回显密码本身,例如,它将显示字符串" password“,而不是显示上面的内容。
如何才能做到这一点?
谢谢
发布于 2012-10-09 21:21:34
不要覆盖变量$pass;
$pass = rand();
$md5pass = md5($pass);
$md5pass = substr($md5pass, 0, 15);
$md5pass = md5(md5("g3f".$md5pass."rt4"));MD5散列是一个单向的过程,尤其是使用salt时。你不能逆转它。
任何好的密码系统都不存储原始密码,而是存储散列后的副本,然后通过散列用户的输入并比较两个密码来验证用户输入的密码是否正确。
发布于 2012-10-09 21:20:31
你不能。哈希是单行道。如果您想隐藏稍后需要显示的字符串,则需要使用加密。然而,当涉及到密码时,这是一个禁忌。
为了解决问题的第二部分,您不应该通过电子邮件发送用户密码。实施服务器端解决方案(例如,使用安全问题+验证他们的电子邮件),并在身份验证后,允许用户直接在网站上更改其密码。
哦,还有一件事-忘记MD5!
发布于 2012-10-09 21:21:47
$pass = rand();
$originalPass = $pass;
$pass = md5($pass);
$pass = substr($pass, 0, 15);
$pass = md5(md5("g3f".$pass."rt4"));
echo $originalPass;或
$pass = rand();
echo $pass;
$pass = md5($pass);
$pass = substr($pass, 0, 15);
$pass = md5(md5("g3f".$pass."rt4")); https://stackoverflow.com/questions/12800974
复制相似问题