我正在使用XAMPP在本地开发一个网站。有一个注册页面,我在其中用 MD5 加密密码后,将密码保存到MySQL数据库。问题是,当我尝试登录时,我无法做到。我发现密码是问题所在。我检查了数据库,并将MD5-ed密码与我登录的密码进行了比较(我只是将密码的MD5哈希回显到页面上进行比较)。我发现数据库中的那个比回显的那个短。我的结论是MySQL在哈希结束时砍掉了一些字符。我该怎么办?我知道它与MySQL上的一些设置有关,但我需要帮助。
截至目前,我必须在注册和登录过程中对哈希使用 substr 函数,以便能够登录。
答案 0 :(得分:5)
如果列长度导致问题,请更改列以接受更长的长度。 MD5总是32位十六进制数字,因此VARCHAR(32)将是一个不错的选择。
答案 1 :(得分:2)
它取决于数据库中值的长度...检查数据库中的字段并验证其类型至少类似于 varchar(32)
要修复它,您可以使用类似
的查询ALTER TABLE Example
MODIFY password varchar(32)
或使用phpMyAdmin界面