【问题标题】:MySQL chops off characters from md5 passwordMySQL 从 md5 密码中删除字符
【发布时间】:2011-05-27 11:20:17
【问题描述】:

我正在使用 XAMPP 在本地开发一个网站。有一个注册页面,我将密码用 MD5 加密后保存到 MySQL 数据库。问题是当我尝试登录时,我无法登录。我发现密码是问题所在。我检查了数据库并将 MD5 密码与我登录时使用的密码进行了比较(我只是将密码的 MD5 哈希回显到页面上进行比较)。我发现数据库中的那个比回显的那个短。我的结论是 MySQL 在散列末尾切掉了一些字符。我应该怎么办?我知道这与 MySQL 上的一些设置有关,但我需要帮助。

目前,我必须在注册和登录过程中对哈希使用substr函数才能登录。

【问题讨论】:

  • 数据库中的列是什么类型/大小 - 它可以适合 md5 哈希吗?
  • 字段大小合适吗?您的参数化查询可能会砍掉一些东西吗?向我们展示您的代码!
  • 发布您的表定义:show create table.

标签: mysql md5


【解决方案1】:

如果是列长度导致问题,请更改列以接受更长的长度。 MD5 总是 32 位十六进制数字,因此 VARCHAR(32) 将是一个不错的选择。

【讨论】:

  • 我会说这是最有可能的答案。
  • 非常感谢。傻我。我实际上使用的是 varchar(14)。我创建数据库的目的是存储实际的密码字符串。我是 PHP 新手。再次感谢
【解决方案2】:

这取决于数据库中值的长度...检查数据库中的字段并验证他的类型至少类似于 varchar(32)

要修复它,您可以使用这样的查询

ALTER TABLE Example
 MODIFY password  varchar(32)  

或使用 phpMyAdmin 界面

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多