常常在做webqq机器人,可是最头痛的问题就是腾讯常常加一些验证串来防止robot,如今共享出最新的腾讯password加密算法和hash

算法

hash算法

def webqq_hash(i, a):
if isinstance(i, (str, unicode)):
i = int(i)
class b:
def __init__(self, _b, i):
self.s = _b or 0
self.e = i or 0 r = [i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, i & 255] j = [ord(_a) for _a in a] e = [b(0, len(j) - 1)]
while len(e) > 0:
c = e.pop()
if not (c.s >= c.e or c.s < 0 or c.e > len(j)):
if c.s+1 == c.e:
if (j[c.s] > j[c.e]) :
l = j[c.s]
j[c.s] = j[c.e]
j[c.e] = l
else:
l = c.s
J = c.e
f=j[c.s]
while c.s < c.e:
while c.s < c.e and j[c.e]>=f:
c.e -= 1
r[0] = r[0] + 3&255 if c.s < c.e:
j[c.s] = j[c.e]
c.s += 1
r[1] = r[1] * 13 + 43 & 255 while c.s < c.e and j[c.s] <= f:
c.s += 1
r[2] = r[2] - 3 & 255 if c.s < c.e:
j[c.e] = j[c.s]
c.e -= 1
r[3] = (r[0] ^ r[1]^r[2]^r[3]+1) & 255
j[c.s] = f
e.append(b(l, c.s-1))
e.append(b(c.s + 1, J))
j = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
"B", "C", "D", "E", "F"]
e = ""
for c in range(len(r)):
e += j[r[c]>>4&15]
e += j[r[c]&15] return e def newhash(b,j):
a=j+"password error"
i=""
E=[]
while True:
if len(i)<=len(a):
i+=b
if len(i)==len(a):
break
else:
i=i[0:len(a)]
break
for c in range(len(i)):
E.append(ord(str(i[c]))^ord(str(a[c])))
a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
i = ""
for c in range(len(E)):
i+=a[E[c] >> 4 & 15]
i+= a[E[c] & 15]
return i

这个算法加密出的串是获取好友列表和群列表都须要的

password加密算法

#md5加密函数
def PCMd5(self,s):
h=hashlib.md5()
h.update(s)
return h.hexdigest()
#16进制转字符
def hex2asc(self,s):
_str="".join(s.split(r'\x'))
length=len(_str)
data=''
for i in range(0,length,2):
data+=chr(int(_str[i:i+2],16))
return data
 #密码加密函数
    '''
    v1 是 ptui_checkVC('0','!LJV','\x00\x00\x00\x00\x00\xa1\x92\x12') 第一个參数
    V2 是 ptui_checkVC('0','!LJV','\x00\x00\x00\x00\x00\xa1\x92\x12') 第二个
    '''
    def PasswordSecret(self,password,v1,v2,md5=True):
        if md5==True:
            password=self.PCMd5(password).upper()
        length=len(password)
        temp=''
        for i in range(0,length,2):
            temp+=r'\x'+password[i:i+2]
        return self.PCMd5(self.PCMd5(self.hex2asc(temp)+self.hex2asc(v2)).upper()+v1).upper()

腾讯webqq最新password加密算法,hash算法的更多相关文章

  1. [区块链] 加密算法——Hash算法(进阶)

    为了为保证存储于区块链中的信息的安全与完整,区块链中使用了包含密码哈希函数和椭圆曲线公钥密码技术在内的大量的现代密码学技术,同时,这些密码学技术也被用于设计基于工作量证明的共识算法并识别用户. 在前边 ...

  2. webqq 获得好友列表hash算法 获得最新hash的方法

    webqq获得好友列表的hash算法,大约每一个月中旬会变动一次.知道怎么获得他就能够了. js文件路径 http://web.qstatic.com/webqqpic/pubapps/0/50/eq ...

  3. 关于 Spring Security 5 默认使用 Password Hash 算法

    账户密码存储的安全性是一个很老的话题,但还是会频频发生,一般的做法是 SHA256(userInputpwd+globalsalt+usersalt) 并设置密码时时要求长度与大小写组合,一般这样设计 ...

  4. 浅析nodeJS中的Crypto模块,包括hash算法,HMAC算法,加密算法知识,SSL协议

    node.js的crypto在0.8版本,这个模块的主要功能是加密解密. node利用 OpenSSL库(https://www.openssl.org/source/)来实现它的加密技术, 这是因为 ...

  5. Hash算法原理的简单分析

    哈希计算就是努力的把比较大的数据存放到相对较小的空间中.最常见的哈希算法是取模法.下面简单讲讲取模法的计算过程.比如:数组的长度是5.这时有一个数据是6.那么如何把这个6存放到长度只有5的数组中呢.按 ...

  6. hash算法原理及应用漫谈【加图版】

    原文:https://blog.csdn.net/Tencent_TEG/article/details/103021226 提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链 ...

  7. 编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法

    目录(?)[+]   第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题 作者:July.2011.10.16.出处:http://blog.csdn.net/v_JULY_v. 引言 ...

  8. hash算法

    作者:July.wuliming.pkuoliver 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解:第二部分为关于Hash表算法的详细阐述:第三部分为打造一个最快的Hash ...

  9. 一致性Hash算法在Memcached中的应用

    前言 大家应该都知道Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现.常规的方法是将server的hash值与server的总台数进行求余,即hash% ...

随机推荐

  1. STL模板_智能指针概念

    一.智能指针1.类类型对象,在其内部封装了一个普通指针.当智能指针对象因离开作用域而被析构时,其析构函数被执行,通过其内部封装的普通指针,销毁该指针的目标对象,避免内存泄露.2.为了表现出和普通指针一 ...

  2. BZOJ 4311: 向量( 按时间分治 + 线段树 )

    离线, 然后按时间分治, 每个向量都有出现时间[l, r], 直接插入时间线段树(一个向量只会影响O(logN)数量级的线段树节点). 在线段树每个节点弄出凸壳然后二分. 时间复杂度O(Nlog^2N ...

  3. BZOJ 1406: [AHOI2007]密码箱( 数论 )

    (x+1)(x-1) mod N = 0, 枚举N的>N^0.5的约数当作x+1或者x-1... ------------------------------------------------ ...

  4. bzoj 1066 : [SCOI2007]蜥蜴 网络流

    题目链接 给一个n*m的图, 里面每一个点代表一个石柱, 石柱有一个高度. 初始时有些石柱上面有蜥蜴, 蜥蜴可以跳到距离他曼哈顿距离小于等于d的任意一个石柱上,跳完后, 他原来所在的石柱高度会减一, ...

  5. 一个好用的hash函数(C语言)

    typedef unsigned int DWORD; typedef unsigned char BYTE; /******************************************* ...

  6. Linux ---> 监控JVM工具

    Linux ---> 监控JVM工具shkingshking 发布时间: 2013/10/10 01:27 阅读: 2642 收藏: 26 点赞: 1 评论: 0 JDK内置工具使用 jps(J ...

  7. sql2012管理

    一.还原完整备份的语法如下: RESTORE DATABASE { database_name | @database_name_var }                  --数据库名 [ FRO ...

  8. css 自适应布局阮一峰

    转载一篇文章: 自适应网页设计(Responsive Web Design) 作者: 阮一峰 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小 ...

  9. linux c in common use function reference manual

    End User License Agreement guarantees or warranties,大战前得磨刀!!!!! Tips:C Funcs Chk header Modules!

  10. 深刻理解void,void*和sizeof关键字

    void的字面值是“无类型”,void*则是"无类型指针".void*可以指向任何类型的数据.void几乎只有"注释"和限制程序的作用,因为从来没有人会定义一个 ...