8

我正在尝试建立一个登录系统,但我无法解决一个问题:PHP 正在给我另一个输出 md5(); 比 MySQL...

例如,在 PHP 中:

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

回报:

3aa7b18f304e2e2a088cfd197351cfa8

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

3aa7b18f304e2e2a08

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

4

4 回答 4

9

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

于 2012-07-18T11:55:28.887 回答
2

MySQL 不可能返回长度小于 32 的它。如果您执行类似 的简单查询SELECT md5('brickmasterj'),您会看到。现在您很可能将值插入到不够宽的列中。

于 2012-07-18T11:56:46.783 回答
2

您的数据库字段长度是否为 32 个字符?您是否正在使用 mysql 的 md5 写入数据库?

于 2012-07-18T11:57:17.810 回答
0

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

于 2015-09-04T06:51:10.363 回答