|
最近在研究stblog的代码
遇到一个地方看不懂 求高手们帮忙看下
首先看下面的代码:
这些代码来自一个类名叫Common的文件
PHP复制代码
public static function do_hash ($string, $salt = NULL)
{
if(null === $salt)
{
$salt = substr(md5(uniqid(rand(), true)), 0, ST_SALT_LENGTH );
}
else
{
$salt = substr($salt, 0, ST_SALT_LENGTH );
}
return $salt . sha1($salt . $string);
}
public static function hash_Validate ($source, $target)
{
return (self::do_hash($source, $target) == $target);
}
复制代码
再看下面的代码:
这些代码是来自模型中的(上面所说的那个Common类文件一杯加载了)
PHP复制代码 public function validate_user ($username, $password)
{
$data = FALSE;
$this->db->where('name', $username);
$query = $this->db->get(self::TBL_USERS);
if($query->num_rows() == 1)
{
$data = $query->row_array();
}
if(!empty($data))
{
$data = (Common ::hash_Validate($password, $data['password'])) ? $data : FALSE;
}
$query->free_result();
return $data;
}
复制代码
我主要看不懂的是这句
PHP复制代码 $data = (Common::hash_Validate($password, $data['password'])) ? $data : FALSE; 复制代码
他是如何判断两个值是不是相等的啊??
其中 $data['password']是经过MD5和sha1加密过的 不不可逆的
而$password是原始的字符串 ,再怎么加密 但是随机取的值总是不一样的啊??
很不好理解!
求高手帮忙………… |
|