首页 > 代码库 > 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处理后的数据不一致,请留言告知。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。