让代码更简单

C#中的左移位右移位命令详解

重要:本文最后更新于2018-11-13 20:50:41,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

有时候我们对数据进行加密会选择各种各样的方法,比如QQ坦白说的加密,真是够奇葩的,第一次见到这种加密,程序员应该心情很美丽,居然能这么做。下面就以QQ坦白说解密为例,讲解下C#中不常用的一些命令。

C#中的左移位右移位命令详解

C#中的左移位右移位命令详解

QQ坦白说是http://ti.qq.com的一款产品,通过获取QQ用户的cookies,模拟提交查询可以得到所有坦白说数据,不过发送者的QQ号是加密的,解密方法如下。

首先获取到cookies后,通过计算skey的左移5位数据,对应字符的键代码,并在5381的基础上加上这些值最终得到一个数值,这个值就是用来请求坦白说数据的标识。

左移计算方式

左移几位就乘以2的N次方。
在计算机中采用2进制,一位最大为2,满2进一,移动一位就增加2。
比如,将10左移3位就是:10X2X2X2移动几次就乘几次。
右移相反,除以2的N次方。这里就不多解释了,参照上面的左移。

将上面的信息后,我们会得到一串类似下面的json数据。

复制
{
    "code":0,
    "data":{
        "list":[
            {
                "fromNick":"一个认识7年的男生",
                "fromEncodeUin":"*S1*oKvPoK6kow6zNKSFNKCk7wvi",
                "group":0,
                "fromFaceUrl":"man.png",
                "fromGender":0,
                "toUin":1016134519,
                "toNick":"",
                "topicId":10142,
                "topicName":"霸气这两个字的本人",
                "timestamp":1528589816
            }
        ],
        "cookie":"CgAQ+Nvx2AU=",
        "finish":1
    }
}

本站json在线解析工具快速格式化json数据,帮助阅读。
fromNick就是发送者的名称。

fromEncodeUin就是发送者的QQ号码,不过被加密了,下面讲解密。

topicName发送的内容。

timestamp发送的时间,时间戳的形式。

将fromEncodeUin前面的四位字符去掉,即去掉*S1*。

然后以2位字符作为一个数据,与下表比对,没有的就一个字符比对,最终计算出结果。

感觉很棒!可以赞赏支持我哟~

1 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐