mysql sha256密码哈希编辑疯狂!

时间:2011-04-21 17:54:34

标签: php mysql pdo hash

我像这样哈希我的密码;

 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。

我做的事情愚蠢吗?!?

感谢。

3 个答案:

答案 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将其转义为转义。