我最近一直在创建一个用户管理站点,只需一次登录即可编辑/更改站点的各个方面。我试图创建一个更改密码页面,以便用户显然能够根据需要更改密码,我正在搞乱这个并且完全搞砸了我的md5
和盐加密到我无法登录的地步在了。
在密码行的数据库中,我显示了长字符十六进制数字(对应于我输入网站登录的密码,md5功能改变了这个),我删除了更长的密码数据库(因为它不再工作)并放回我的实际密码...因此我能够再次登录,但我的密码没有安全性...我不知道如何获得安全性?< / p>
我的加密页面仍然存在但现在无用......
<?php
function encrypt($password){
$salt1="egf";
$salt2="7yh";
$password = md5($salt1 . $password . $salt2);
return $password;
}
?>
请帮助,任何建议将不胜感激!谢谢
答案 0 :(得分:2)
让我们分段看你的代码:
function encrypt($password){ // You're not encrypting here at all!
$salt1="egf"; // Not a salt
$salt2="7yh"; // Not a salt
$password = md5($salt1 . $password . $salt2); // MD5 is insecure
return $password; // Why set to variable then return?
}
您似乎无法理解some fundamental cryptography concepts。
解决方案:使用password_hash()
和password_verify()
。它是由专家为这个确切的用例设计的。
如果您使用的是旧版本的PHP而不是5.5.0,请升级。如果您不在,请向您的托管服务提供商投诉,然后使用password_compat。
不要推出自己的密码存储方案。