我想在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 _...
答案 0 :(得分:2)
您可能打算这样做:
return sha1($hashcode . md5($hashcode.$mail));
而不是:
return sha1($hashcode,md5($hashcode.$mail));
sha1()
的第二个参数是一个布尔值,控制它是以原始格式还是字符串格式返回哈希值(false = string,这是你要插入的内容)。
答案 1 :(得分:2)
您未正确使用函数sha1,其签名为
string sha1 ( string $str [, bool $raw_output = false ] )
因为md5函数会评估为非虚假(某些字符串),你将获得原始二进制输出。
顺便说一下,你使用md5函数犯了同样的错误,它与sha1具有相同的签名
string md5 ( string $str [, bool $raw_output = false ] )