最近用C#写qq活动辅助类程序,碰到了会员签到的gtk算法不一样,后来网上找了看,发现有php版的(https://www.oschina.net/code/snippet_1378052_48831)

后来参考了php版的查php相关的资料用C#写了一个:

 /// <summary>
/// 计算gtk32值
/// </summary>
/// <param name="skey"></param>
/// <returns></returns>
public static string GetGTK32(string skey)
{
var hash = ;
var md5Key = "tencentQQVIP123443safde&!%^%1282";
var start = hash << ;
var result = string.Empty;
for (int i = ; i < skey.Length; i++)
{
var ascode = CharToASCII(skey.Substring(i, ));
result += (hash << ) + ascode;
hash = ascode;
}
var str = start + (result + md5Key);
return GetMD5(str);
} /// <summary>
/// MD5加密
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string GetMD5(string text)
{
StringBuilder sb = new StringBuilder();
using (MD5 md5 = MD5.Create())
{
byte[] md5Byte = md5.ComputeHash(Encoding.Default.GetBytes(text));
for (int i = ; i < md5Byte.Length; i++)
{
sb.Append(md5Byte[i].ToString("x2"));
}
}
return sb.ToString();
} /// <summary>
/// /*字符转化为ASCII*/
/// </summary>
/// <param name="character"></param>
/// <returns></returns>
static int CharToASCII(string character)
{
ASCIIEncoding asciiEncoding = new ASCIIEncoding();
int intAsciiCode = asciiEncoding.GetBytes(character)[];
return intAsciiCode;
}

另附上解析cookie中的skey和p_skey方法和gtk算法:

        /// <summary>
/// 解析cookie,取到Skey
/// </summary>
/// <param name="cookies">腾讯QQ cookie</param>
/// <returns></returns>
public static string GetSkey(string cookies)
{
#region 字符串分割解析
//var keyStr = "skey=";
//var index = cookies.IndexOf(keyStr) + keyStr.Length;
//var skey = cookies.Remove(0, index);
//if (skey.Contains(";") && skey.Length > 10)
//{
// var laindex = cookies.IndexOf(";");
// skey = skey.Remove(10);
//}
#endregion
var skey = Regex.Match(cookies, "skey=(.){10}?").Value.Remove(, );
if (skey.Length > )
{
skey.Remove();
}
return skey;
} /// <summary>
/// 解析cookie,取到p_skey
/// </summary>
/// <param name="cookies">腾讯QQ cookie</param>
/// <returns></returns>
public static string Getp_skey(string cookies)
{
return Regex.Match(cookies, "p_skey=(.)+?_").Value.Remove(, );
} /// <summary>
/// 算出g_tk
/// </summary>
/// <param name="sKey">cookie中的sKey值</param>
/// <returns></returns>
public static string GetGTK(string sKey)
{
var hash = ;
for (int i = , len = sKey.Length; i < len; ++i)
{
hash += (hash << ) + sKey[i];
}
return (hash & 0x7fffffff).ToString();
}

腾讯QQ会员中心g_tk32算法【C#版】的更多相关文章

  1. C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】

    C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...

  2. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)

    四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...

  3. 腾讯QQ会员技术团队:以手机QQ会员H5加速为例,为你揭开sonic技术内幕

    目前移动端越多越多的网页开始H5化,一方面可以减少安装包体积,另一方面也方便运营.但是相对于原生界面而言,H5的慢速问题一定被大家所诟病,针对这个问题,目前手Q存在几种方案,最常见的便是离线包方案,但 ...

  4. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件

    QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...

  5. QQ会员AMS平台PHP7升级实践

    作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. QQ会员活动运营平台(AMS ...

  6. QUIC协议的分析,性能测试以及在QQ会员实践

    WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...

  7. 日请求亿级的QQ会员AMS平台PHP7升级实践

    版权声明:本文由PHP7升级项目组原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/74 来源:腾云阁 https://www ...

  8. QQ会员活动运营平台架构设计实践——高效自动化运营

    QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统.在过去四年的时间里,AMS日请求量从200-500万的阶段,一直增长到日请求3-5亿,最高CGI日请 ...

  9. 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度……

    腾讯QQ团队将于12月4日开源一个服务开发运营框架,叫做毫秒服务引擎(Mass Service Engine in Cluster,MSEC),它集RPC.名字发现服务.负载均衡.业务监控.灰度发布. ...

随机推荐

  1. hdu 5381

    题解: 还是比较水的一道题 首先可以发现每个数最多被除log次,所以有连续一段相同 然后我想的是变成矩形统计前缀和问题用主席树来维护 然后发现这题很卡空间 qwq acm依旧很多64mb的题 首先比较 ...

  2. 【Java】 剑指offer(46) 把数字翻译成字符串

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成" ...

  3. 090实战 Hadoop离线项目介绍(不包括程序)

    一:项目场景 1.需求分析 根据用户行为数据进行程序的处理,得到结果保存到关系型数据库中 需要收集用户(系统使用者)在不同客户端上产生的用户行为数据,最终保存到hdfs上 需要明确收集字段的相关信息, ...

  4. 内置函数 filter zip map

    1. 基本内置函数: 2. enumerate :  枚举 把列表转化为有索引的字典: 3. eval 和 exec 4. 过滤函数  filter 5. map 函数批量修改: 6. 配对函数 zi ...

  5. Biquads

    From : http://www.earlevel.com/main/2003/02/28/biquads/     One of the most-used filter forms is the ...

  6. mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装

    一.mac OS X下Java项目环境搭建 因为某些原因新入手了台最新版的MacBook Pro,意味着今天要花一天时间安装各种软件以及项目环境搭建╮(╯▽╰)╭ 项目环境搭建步骤: 1.安装jdk ...

  7. jackson实现java对象转支付宝/微信模板消息

    一.支付宝消息模板大致长这样 { "to_user_id": "", "telephone": "xxxxx", &qu ...

  8. go标准库-log包源码学习

    log包是go语言提供的一个简单的日志记录功能,其中定义了一个结构体类型 Logger,是整个包的基础部分,包中的其他方法都是围绕这整个结构体创建的. Logger结构 Logger结构的定义如下: ...

  9. 蓝牙扫描工具btscanner修复暴力扫描模式

    蓝牙扫描工具btscanner修复暴力扫描模式   在btscanner 2.1-5版本中,当用户按下快捷键b,执行暴力扫描模式,会出现程序奔溃问题.该问题现在已经修复.用户只需要更新系统,将btsc ...

  10. AGC 019F.Yes or No(思路 组合)

    题目链接 \(Description\) 一共有\(n+m\)道判断题,其中有\(n\)个答案为"YES",\(m\)个为"NO".现在以随机顺序给你这\(n+ ...