pangxia75 发表于 2015-8-28 00:04:53

php g_tk 算法实现

  g_tk参数是腾讯在web产品上经常使用的一个参数。该参数一般用于:QQ空间、朋友网、QQ活动等地方。
  g_tk是由cookie中的skey生成,网上有js、java、c#等语言的算法,但是貌似没有公开php算法。
  昨天在sina sae开发一个应用,用到此参数,故改写了一下。现在分享给大家



function getGTK($cookie){
$str = $cookie['skey'];
$hash = 5381;
$len = strlen($str);
for($i = 0;$i < $len;$i++)
{
$h = ($hash << 5) + utf8_unicode($str[$i]);
$hash+=$h;
}
return $hash & 0x7fffffff;
}
function utf8_unicode($c) {
switch(strlen($c)) {
case 1:
return ord($c);
case 2:
$n = (ord($c) & 0x3f) << 6;
$n += ord($c) & 0x3f;
return $n;
case 3:
$n = (ord($c) & 0x1f) << 12;
$n += (ord($c) & 0x3f) << 6;
$n += ord($c) & 0x3f;
return $n;
case 4:
$n = (ord($c) & 0x0f) << 18;
$n += (ord($c) & 0x3f) << 12;
$n += (ord($c) & 0x3f) << 6;
$n += ord($c) & 0x3f;
return $n;
}
}

  
  其中utf8_unicode函数可用ord代替
  
  推荐一个很好的QQ协议研究论坛:www.qicq5.com
  
  
  嘀咕cat
页: [1]
查看完整版本: php g_tk 算法实现