【发布时间】:2020-06-12 14:48:02
【问题描述】:
我正在尝试将哈希插入 MySQL,以便测试用户登录。我的第一直觉是使用 phpMyAdmin 来更轻松地快速更新密码(默认哈希为 60 0),直到我开始使用我的网站制作一个页面。哈希字段是 binary (60) 数据类型。我的错误是请输入有效的十六进制输入。
要生成哈希,我使用以下代码:Code Credit
$pass = "password";
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$cost = 10;
$salt = sprintf("$2y$%02d$", $cost) . $salt;
$hash = crypt($pass, $salt);
echo $hash;//Result: $2y$10$XFo5biY5UvZfaRjhDraOFO26yocvwiAwidtGNIvoEezj5zitb2Xem
我已经意识到我已经完成了让网站为我做插入的工作,但这不是问题所在。我想知道为什么 phpMyAdmin > myDB > myTable > browse > edit 然后从上面复制粘贴结果 不起作用,但是 phpMyAdmin > myDB > myTable > SQL 在使用以下内容时确实有效:
UPDATE `myTable` SET `hash`="$2y$10$XFo5biY5UvZfaRjhDraOFO26yocvwiAwidtGNIvoEezj5zitb2Xem" WHERE username = "myusername"
回到 phpMyAdmin > myDB > myTable > browse 我发现我的 ASCII 哈希已更改为 HEX 哈希:
2432792431302458466f356269593555765a6661526a684472614f464f3236796f637677694177696474474e49766f45657a6a357a6974623258656d
当我在 phpMyAdmin 中进行选择时,这个 HEX 字符串保持不变,但是,使用 MySQL 控制台,我从来没有看到 HEX,它总是 ASCII。有谁知道为什么我不能在 phpMyAdmin 中插入 ASCII 哈希,但我可以在 MySQL 中?
编辑:死链接,但WayBack Machine 有一个副本。
【问题讨论】: