首页 > 代码库 > WebQQ hash值获取 C#方法 2014/06/20

WebQQ hash值获取 C#方法 2014/06/20

去年心血来潮,利用闲暇时间做了一个WebQQ的桌面软件,基本功能实现之后,就放那儿了。webQQ的协议时常更新,导致有些参数加密的方法要跟着更新,今天群里一朋友提供了一份最新的WebQQ hash的js,我转成了C#的方法,记在这里,希望对正在做webqq的朋友有所帮助。

js方法

 

p=getqqhsahs(b,j) {            for (var a = j + "password error",            i = "",            E = [];;) if (i.length <= a.length) {                if (i += b, i.length == a.length) break            } else {                i = i.slice(0, a.length);                break            }            for (var c = 0; c < i.length; c++) E[c] = i.charCodeAt(c) ^ a.charCodeAt(c);            a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];            i = "";            for (c = 0; c < E.length; c++) i += a[E[c] >> 4 & 15],            i += a[E[c] & 15];            return i        }

 

转成C#方法

public string GetHash(uint b, string j)        {            var a = j + "password error";            var i = "";            var E = new List<int>();            while (true)            {                if (i.Length <= a.Length)                {                    i += b;                    if (i.Length == a.Length)                        break;                }                else                {                    i = i.Substring(0, a.Length);                    break;                }            }            char[] ichars = i.ToCharArray();            char[] achars = a.ToCharArray();            for (var c = 0; c < i.Length; c++)                E.Add(((int)ichars[c] ^ (int)achars[c]));            string[] a1 = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };            i = "";            for (var c = 0; c < E.Count; c++)            {                i += a1[(int)E[c] >> 4 & 15];                i += a1[(int)E[c] & 15];            }            return i;        }

代码的返回数据已经和js进行了对比,可以使用; 由于我自己的webQQ很久没有更新,这个方法没有在webqq项目中测试;使用中有遇到和js处理后的数据不一致,请留言告知。