无法将特殊哈希码插入数据库

时间:2012-07-30 23:11:36

标签: php mysql hash md5 sha

我想在mysql数据库中保存哈希密码,所以我在CodeIgniter中开发了以下方法。

private function hashing($password = '',$mail = '')
{
    $hashcode = md5($password, $mail);
    return sha1($hashcode,md5($hashcode.$mail));
}

表示插入:

$data = array('mail'=>$mail,'password'=>$password,'actived'=>1,'time'=>time());
$this->db->insert('users', $data);

正确插入其他字段而不是密码。

它会产生类似

的东西
òLmy­ÉZÔe+ú§3GèÇu‘

它无法保存在mysql数据库中。问题出在哪里?

编辑数据库排序规则为utf8_unicode_ci 编辑我正在使用CodeIgniter,因此它不需要mysql_real _...

2 个答案:

答案 0 :(得分:2)

您可能打算这样做:

return sha1($hashcode . md5($hashcode.$mail));

而不是:

return sha1($hashcode,md5($hashcode.$mail));

sha1()的第二个参数是一个布尔值,控制它是以原始格式还是字符串格式返回哈希值(false = string,这是你要插入的内容)。

http://php.net/manual/en/function.sha1.php

答案 1 :(得分:2)

您未正确使用函数sha1,其签名为

string sha1 ( string $str [, bool $raw_output = false ] )

因为md5函数会评估为非虚假(某些字符串),你将获得原始二进制输出。

顺便说一下,你使用md5函数犯了同样的错误,它与sha1具有相同的签名

string md5 ( string $str [, bool $raw_output = false ] )