-1

我想在 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'</pre>

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

编辑数据库排序规则是 utf8_unicode_ci 编辑我正在使用 CodeIgniter,所以它不需要 mysql_real_...

4

2 回答 2

2

您可能打算这样做:

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

而不是这个:

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

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

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

于 2012-07-30T23:23:42.430 回答
2

您没有正确使用函数 sha1,它的签名是

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

因为 md5 函数将评估为不为假的内容(某些字符串),您将获得原始二进制输出。

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

string md5 ( string $str [, bool $raw_output = false ] )
于 2012-07-30T23:24:37.953 回答