一个分享个人学习、开发经验的Blog,http://www.joyphper.net

QQ空间g_tk加密算法PHP版

posted @ 2013-10-10 19:26 | 阅读:3801 | 评论:0 | 分类: PHP , 代码分享

g_tk参数是腾讯在web产品上经常使用的一个参数。该参数一般用于:QQ空间、朋友网、QQ活动等地方。

g_tk是由cookie中的skey生成,网上有js、java、c#等语言的算法,但是貌似没有公开php算法。

昨天在sina sae开发一个应用,用到此参数,故改写了一下。现在分享给大家

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

TAG: g_tk , 加密 , php

共有0条评论 发表评论>>

点击换一张验证码