C# QQ的一段skey转bkn算法

private void webBrowserLogin_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //加载完成
            if (webBrowserLogin.Url.Host.ToLower() == "qun.qq.com")
            {
                if (webBrowserLogin.Document.Cookie != null)
                {
                    //Config.myCookieContainer = null;
                    Config.cookies = webBrowserLogin.Document.Cookie;
                    string[] cookies = webBrowserLogin.Document.Cookie.Split(‘;‘);
                    foreach (string str in cookies)
                    {
                        string[] keyvalue = str.Trim().Split(‘=‘);
                        Cookie ck = new Cookie(keyvalue[0], keyvalue[1]);
                        ck.Domain = ".qq.com";
                        Config.myCookieContainer.Add(ck);
                        if (keyvalue[0].ToLower().Equals("skey"))
                        {
                            string value = keyvalue[1];
                            Config.bkn = SkeyToBkn(value);
                        }
                        if (keyvalue[0].ToLower().Equals("uin"))
                        {
                            Config.uin = GetUin(keyvalue[1]);
                        }
                    }
                    this.DialogResult = DialogResult.OK;
                }
            }
        }

        /// <summary>
        /// skey转bkn
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private string SkeyToBkn(string str)
        {
            int hash = 5381;
            for (int i = 0; i < str.Length; ++i)
            {
                hash += (hash << 5) + (int)str[i];
            }
            return (hash & 2147483647).ToString();
        }

        /// <summary>
        /// 通过uin获取QQ号
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private string GetUin(string str)
        {
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] != ‘o‘ && str[i] != ‘0‘)
                {
                    return str.Substring(i, str.Length - i);
                }
            }
            return null;
        }
时间: 2024-08-03 08:56:36

C# QQ的一段skey转bkn算法的相关文章

发现一段精简的模板算法(非原创)

引用自: http://ejohn.org/blog/javascript-micro-templating/ // Simple JavaScript Templating // John Resig - http://ejohn.org/ - MIT Licensed (function(){ var cache = {}; this.tmpl = function tmpl(str, data){ // Figure out if we're getting a template, or

QQ gtk,bkn算法

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

由一段小程序看算法复杂度

今天被要求写一段程序,题目如下: 已知过去四周内20个交易日天内黄金的价格,求过去20天内最大差值? a[20]={2,5,1,6,7,9,10,18...1} 我当时想的是差值,肯定是两天交易日之间的差值,第1天与第2天之间的差值,第2天与第3天之间的差值,第一天与第三天之间的差值,他们之间的最大值?? 于是,很有自信地写了: int a[20]={2,5,1,6,7,9,10,18...1}: int b[19]={0}; int max=0; for(int m=1;m<20;m++) {

抓取60000+QQ空间说说做一次数据分析

对于QQ空间的数据一直来是垂涎不已,老早就想偷过来研究研究,这几天闲下来便开始动手... 整个程序的流程为:登录-->获取cookie-->获取所有的好友qq_number-->根据所有的好友qq遍历他们的说说-->get所有好友的说说数据 程序跑了20多分钟就跑完了,,共282好友,,跑了60000+说说 有些个人隐私我抹掉了..甭介意.嘿嘿 1.登录-->获取cookie 打开http://i.qq.com/,如下图 但大多数时候是这样的 我们这里使用账号密码登录,为了方

(引用)自动化如何应对UI变更

让我们来聊一下UI自动化测试 转载:http://mt.sohu.com/20161209/n475414269.shtml 我发现了,大家极度关心自动化测试,尤其是UI自动化测试,虽然现在作为专项测试,离开这些越来越远了,但总能遥想以前,我总能想起自己做nokia的WindowsLive的ui自动化,做web的自动化测试,后面加入腾讯,写过pc的自动化,作为早期的终端测试,做android的自动化,然后mac的,然后ios. 先不说有多少成功经验,但是确实有一些感悟,现在分享给大家,希望能帮助

初学oracle,sql,DML向表中插入某个值

SQL> conn scott/tigerConnected.SQL> show user;USER is "SCOTT"SQL> create table qq(name varchar2(10),salary number(8,2)); 创建一个表qq,两个段,名字和工资Table created.SQL> select * from qq;  查询表qq的信息no rows selectedSQL> insert into qq(name) valu

深度学习深入浅出:受限玻尔兹曼机RBM(一)基本概念

技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同时,也仔细看了一些深度学习的典型算法.深度学习是机器学习的"新浪潮",它的成功主要得益于深度"神经网络模型"的优异效果.这个小系列打算深入浅出地记录一下深度学习中常用的一些算法.第一篇先写一下"受限玻尔兹曼机"RBM,会分若干个小段写,这是第一段,关于RBM的基本概念. 网上有很多关于RBM的介绍,但是很多写的比较简略,跳过了很多细节,本文

连通分量模板:tarjan: 求割点 &amp;&amp; 桥 &amp;&amp; 缩点 &amp;&amp; 强连通分量 &amp;&amp; 双连通分量 &amp;&amp; LCA(最近公共祖先)

PS:摘自一不知名的来自大神. 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合. 3.点连通度:最小割点集合中的顶点数. 4.割边(桥):删掉它之后,图必然会分裂为两个或两个以上的子图. 5.割边集合:如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合. 6.边连通度:一个图的边连通度的定义为,最

深度学习方法(十一):卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)

技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 上一篇讲了深度学习方法(十):卷积神经网络结构变化--Maxout Networks,Network In Network,Global Average Pooling,本篇讲一讲Google的Inception系列net,以及还是Google的Xception.(扯一下,Google的Researcher们还是给了很多很棒的idea的,希望读者朋友和我自己在了解paper之余,可以提出自己的想法,并实现.) 如果想