我像这样哈希我的密码;
hash('sha256', $_POST['password'], date('y/m/d'))
现在说一个'aaa'的密码就像这样进入我的mysql表;
˜4‡mÏ°\±g¥ÂIS륌JÈ›ßWò/ ¯~èð
现在当我进去编辑该行的任何内容时,它会忽略一些字符并将其更改为某些内容;
˜4‡mÏ°\±g¥ÂIS륌JÈ›
我尝试更改mysql连接,数据库,表和单个行的所有unicode设置。我正在使用PDO和InnoDB。
我做的事情愚蠢吗?!?
感谢。
答案 0 :(得分:2)
hash
function的原型是:
string hash ( string $algo , string $data [, bool $raw_output = false ] )
你传递date('y/m/d')
作为第三个参数,导致二进制输出,因为字符串被解释为true
。
你可能想要十六进制输出。你应该删掉第三个参数。您可能想以某种方式将日期集成到字段中,这需要连接。
答案 1 :(得分:0)
确保您的列具有二进制类型,或者在将其插入数据库(bin2hex(hash('sha256', …, …));
)之前将哈希值转换为十六进制字符串
答案 2 :(得分:0)
我做的事情愚蠢吗?!?
是。你不应该在phpMyAdmin中手动编辑一组字节。你知道,这不是一个字符串。
为确保数据库中的数据正常,请确保您的列为BINARY类型,并始终使用mysql_real_escape_string将其转义为转义。