-2

所以我在用户注册和登录时使用 md5 对密码进行编码和解码,但是我的数据库中的密码与登录时使用的密码不匹配,即使我知道它们是同一个词:

这是我的数据库中的内容

098f6bcd4621d373cade4e832

这就是在登录屏幕上使用的密码上使用 md5 给我的

098f6bcd4621d373cade4e832627b4f6

如您所见,还有 7 个额外的字符,但我不知道为什么它们不一样。这是用于在注册时将用户详细信息插入数据库的脚本

$qry =  "INSERT INTO Members(fname, lname, fullname, email, login, passwd, bad_league_id) 
         VALUES('$fname','$lname',0,'$email', '$login','".md5($_POST['password'])."',0)";
$result = @mysql_query($qry);

这是我的登录表单比较值的方式

$qry="SELECT * FROM Members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

另一方面,我目前正在从 mysql 转移到 mysqli,所以请原谅使用 mysql,因为我知道它已被弃用。

4

1 回答 1

4

默认情况下,该函数生成的散列MD5()长度为 32 个字符。该passwd列的数据类型为 current VARCHAR (25),这意味着它最多只能存储 25 个字符,比实际值少 7 个字符。

要解决此问题,您需要更改passwd列的数据类型以便能够存储正确的长度,例如VARCHAR (32).

于 2013-03-30T14:41:55.497 回答