PHP md5()提供与MySQL md5不同的输出

时间:2012-07-18 11:53:33

标签: php mysql md5

我正在尝试设置登录系统,但我无法解决一个问题: PHP给我一个md5()的其他输出;比MySQL ......

例如,在PHP中:

$password = md5("brickmasterj");
return $password;

返回:

3aa7b18f304e2e2a088cfd197351cfa8

但MySQL的等价物给了我一个更短的版本:

3aa7b18f304e2e2a08

有什么问题?在检查密码时如何使用它?

4 个答案:

答案 0 :(得分:8)

我猜你表中列长度的问题,将密码字段的长度设置为至少32

答案 1 :(得分:2)

MySQL没有办法返回长度为< 32.如果您要执行SELECT md5('brickmasterj')这样的简单查询,您会看到。现在,您很可能将值插入到不够宽的列中。

答案 2 :(得分:2)

您的数据库字段是否长32个字符?你使用mysql的md5写入数据库吗?

答案 3 :(得分:0)

哈希大小如果总是固定的话。在您的情况下,散列大小为128位。转换为ascii字符串时,它将是一个仅包含十六进制数字的32个字符的字符串。 因此,如果您存储变量字符,则长度应至少为32 例如:password varchar(32) 应该进入mysql表然后你可以使用php调用 select password from table where password =md5($password);