QQ空间g_tk加密参数算法

Posted Cherry的冬天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QQ空间g_tk加密参数算法相关的知识,希望对你有一定的参考价值。

g_tk是腾讯在QQ空间这一领域使用的密文,有写数据包或者url参数中需要加入你计算出的g_tk才能成功!

下面是通过浏览器抓包工具抓取

访问该js内容找出 QZONE.FrontPage.getACSRFToken() 函数

 

QZONE.FrontPage.getACSRFToken = function(url){
    url = QZFL.util.URI(url);
    var skey;
    if(url){
      if(url.host && url.host.indexOf(“qzone.qq.com”)> 0){
        skey = QZFL.cookie.get(“p_skey”);
      } else {
        if(url.host && url.host.indexOf(“qq.com”)> 0){
          skey = QZFL.cookie.get(“skey”);
        }}
      }}
    }}
    if(!skey){
      尝试{
        skey = parent.QZFL.cookie.get(“p_skey”)|| “”;
      } catch(err){
        skey = QZFL.cookie.get(“p_skey”)|| “”;
      }}
    }}
    if(!skey){
      skey = QZFL.cookie.get(“skey”)|| QZFL.cookie.get(“rv2”);
    }}
    var hash = 5381;
    forvar i = 0,len = skey.length; i <len; ++ i){
      hash + =(hash << 5)+ skey.charAt(i).charCodeAt();
    }}
    return hash&2147483647;
  };

得到p_skey后,循环取单字符的二进制并取左值.累加之后就得到后面的g_tk值了

 

转为C#代码

       string p_skey = pskey;
            long hash = 5381;
            for (int i = 0; i < p_skey.Length; i++)
            {
                hash += (hash << 5) + p_skey[i];
            }
            long g_tk = hash & 0x7fffffff;

 

bkn加密算法:

     public long GetBkn(string skey)
        {
            var hash = 5381;
            for (int i = 0, len = skey.Length; i < len; ++i)
            {
                hash += (hash << 5) + (int)skey[i];
            }
            return hash & 2147483647;
        }

 

以上是关于QQ空间g_tk加密参数算法的主要内容,如果未能解决你的问题,请参考以下文章

jmeter接口测试-使用rsa加密解密算法

片段(Java) | 机试题+算法思路+考点+代码解析 2023

可以解密加密数据的片段吗?

手机QQ空间访问出现代码403错误怎么办?

2017 最新qq登录算法 2

怎么在网页源代码里查看QQ空间密码