架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 23755|回复: 0

[资料] c# QQ的一段skey转bkn算法

[复制链接]
发表于 2016-9-6 21:21:30 | 显示全部楼层 |阅读模式
  1. private void webBrowserLogin_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  2.         {
  3.             //加载完成
  4.             if (webBrowserLogin.Url.Host.ToLower() == "qun.qq.com")
  5.             {
  6.                 if (webBrowserLogin.Document.Cookie != null)
  7.                 {
  8.                     //Config.myCookieContainer = null;
  9.                     Config.cookies = webBrowserLogin.Document.Cookie;
  10.                     string[] cookies = webBrowserLogin.Document.Cookie.Split(';');
  11.                     foreach (string str in cookies)
  12.                     {
  13.                         string[] keyvalue = str.Trim().Split('=');
  14.                         Cookie ck = new Cookie(keyvalue[0], keyvalue[1]);
  15.                         ck.Domain = ".qq.com";
  16.                         Config.myCookieContainer.Add(ck);
  17.                         if (keyvalue[0].ToLower().Equals("skey"))
  18.                         {
  19.                             string value = keyvalue[1];
  20.                             Config.bkn = SkeyToBkn(value);
  21.                         }
  22.                         if (keyvalue[0].ToLower().Equals("uin"))
  23.                         {
  24.                             Config.uin = GetUin(keyvalue[1]);
  25.                         }
  26.                     }
  27.                     this.DialogResult = DialogResult.OK;                                      
  28.                 }
  29.             }
  30.         }

  31.         /// <summary>
  32.         /// skey转bkn
  33.         /// </summary>
  34.         /// <param name="str"></param>
  35.         /// <returns></returns>
  36.         private string SkeyToBkn(string str)
  37.         {
  38.             int hash = 5381;
  39.             for (int i = 0; i < str.Length; ++i)
  40.             {
  41.                 hash += (hash << 5) + (int)str[i];
  42.             }
  43.             return (hash & 2147483647).ToString();
  44.         }

  45.         /// <summary>
  46.         /// 通过uin获取QQ号
  47.         /// </summary>
  48.         /// <param name="str"></param>
  49.         /// <returns></returns>
  50.         private string GetUin(string str)
  51.         {
  52.             for (int i = 0; i < str.Length; i++)
  53.             {
  54.                 if (str[i] != 'o' && str[i] != '0')
  55.                 {
  56.                     return str.Substring(i, str.Length - i);
  57.                 }
  58.             }
  59.             return null;
  60.         }
复制代码
以前自己写的代码,做个记录吧。




上一篇:C# 连接 Oracle 的几种方式
下一篇:Navicat for oracle 提示 cannot load OCI DLL,126 193的解决方法
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-9-14 17:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表