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

1 篇文章 0 订阅
1 篇文章 0 订阅

去年心血来潮,利用闲暇时间做了一个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处理后的数据不一致,请留言告知。

注:转载请注明,谢谢
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值