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处理后的数据不一致,请留言告知。

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

时间: 2024-12-28 00:41:01

WebQQ hash值获取 C#方法 2014/06/20的相关文章

获取元素CSS值之getComputedStyle方法熟悉

一.碎碎念~前言 我们都用过jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyValue方法. 对于那些只想混口饭吃的人来讲,晓得CSS()如何使用就足够了.对于希望在JS道路上越走越远的来人说,简单了解一些JS库底层实现对自己的学习很有帮助.可能谈不上信手拈来的使用,至少对创造一些创意新颖的新技术拓宽了思路. jQuery为何受欢迎,其中原因之一就是方法名称比较短.好比打架一样,块头大的潜意识认为厉害,就不由得心生畏惧,退避三舍:小个子(

c#图像处理入门(-bitmap类和图像像素值获取方法)

c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和

使用GetHashes获取Windows的用户密码Hash值

GetHashes是InsidePro公司早期的一款Hash密码获取软件.在Win7上试了一下,它已经没办法捉到SAM文件的Hash值了,不过在Windows XP和Windows Server 2003上,这个小工具还是很好用的. GetHashes是一个命令行工具,它的命令格式是:GetHashes [System key file]或者GetHashes $Local(不区分大小写). 下面用Windows XP来演示一下GetHashes的用法. 我将GetHashes程序解压到了D盘的

BootStrap iCheck插件全选与获取value值的解决方法

这篇文章主要介绍了BootStrap iCheck插件全选与获取value值的解决方法,解决方法其实很简单,下面小编给大家分享下这方面的知识 在使用jQuery iCheck 插件的时候遇到了一个问题,就是当我们使用普通的js全选功能无效了. $("#checkall").click( function(){ if(this.checked){ $("input[name='checkname']").each(function(){this.checked=tru

解析JQuery中css()方法,获取元素CSS值之getComputedStyle方法(转载,写的很好)

一.碎碎念~前言 我们都用过jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyValue方法. 对于那些只想混口饭吃的人来讲,晓得CSS()如何使用就足够了.对于希望在JS道路上越走越远的来人说,简单了解一些JS库底层实现对自己的学习很有帮助.可能谈不上信手拈来的使用,至少对创造一些创意新颖的新技术拓宽了思路. jQuery为何受欢迎,其中原因之一就是方法名称比较短.好比打架一样,块头大的潜意识认为厉害,就不由得心生畏惧,退避三舍:小个子(

转贴:获取元素CSS值之getComputedStyle方法熟悉

获取元素CSS值之getComputedStyle方法熟悉 一.碎碎念~前言 我们都用过jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyValue方法. 对于那些只想混口饭吃的人来讲,晓得CSS()如何使用就足够了.对于希望在JS道路上越走越远的来人说,简单了解一些JS库底层实现对自己的学习很有帮助.可能谈不上信手拈来的使用,至少对创造一些创意新颖的新技术拓宽了思路. jQuery为何受欢迎,其中原因之一就是方法名称比较短.好比打架一样,

webQQ 中hash值的计算 python实现 2015年7月

目前,在获取群列表时,需要post一个hash值,计算函数在js中,具体位置详见注释部分. 另外,此部分更改的频率很快,应该很快就变了. #!/usr/bin/env python # -*- coding: UTF-8 -*- def getHashCode(b, j): """ get the hash num to achieve the grouplist info (record:gcode) source function: http://0.web.qstati

python 通过文件路径获取文件hash值

1 import hashlib 2 import os,sys 3 4 def CalcSha1(filepath): 5 with open(filepath,'rb') as f: 6 sha1obj = hashlib.sha1() 7 sha1obj.update(f.read()) 8 hash = sha1obj.hexdigest() 9 print(hash) 10 return hash 11 12 def CalcMD5(filepath): 13 with open(fi

Java 获取字符串Hash值

Java 生成字符串的Hash值: /** * A hashing method that changes a string (like a URL) into a hash suitable for using as a * disk filename. */ public static String hashKeyForDisk(String key) { String cacheKey; try { final MessageDigest mDigest = MessageDigest.g