如何在用户注册和登录系统中实现MD5哈希?

时间:2010-07-22 02:32:11

标签: php mysql passwords md5

我正在使用PHP和Mysql。我想知道如何使用MD5发送密码哈希,并希望在用户尝试登录时检查它。我试过了,但它无法正常工作。如果有人知道该怎么做,请提供代码。

3 个答案:

答案 0 :(得分:5)

md5不太适合这个目的。阅读this article以了解方法和原因,但简短版本是您应该使用bcrypt。 Google快速显示PHPass声称支持bcrypt

更新:正如@ Dragontamer5788在评论中指出的那样,从理论角度来看,scrypt甚至比bcrypt更好。作者擅长加密,但请注意,此时它的审查次数较少,实际曝光次数少于bcrypt。我可能仍然会选择它,但它并不像bcrypt md5那样干脆。

答案 1 :(得分:0)

//Register:
$the_magical_salt = "everybody_is_obsessed_with_these_days$3^^2)(%=-"; // Even_though_md5_shouldnt_be_used
mysql_query('insert into users values (NULL,'.$filtered_username.','.md5($password.$the_magical_salt).');');
//Login:
$res = mysql_query('select password from users where username = '.$filtered_username);
$res = mysql_fetch_array($res);
if(md5($_POST['password'].$the_magical_salt) == $res[0]) echo "Yeah, you're welcome.";
else echo "Wrong password sugar";

除了两次使用md5()函数之外,没有太多其他内容。

答案 2 :(得分:0)

如果没有更多信息,那将很难帮助你,但我相信你想要的是Digest Authentication

以下是PHP文档中的示例(特别是示例#7):http://php.net/manual/en/features.http-auth.php

请注意,此类身份验证不能防止针对中间人攻击。例如,如果某人正在嗅探受害者网络上的流量,攻击者可以简单地使用消化的用户名/密码组合重播该请求,并且您的PHP脚本将很乐意将攻击者认证为受害者。