xxtea加密算法-忘记是从哪里看到的了
2015-12-16 19:33
176 查看
xxtea.py
测试
#!/usr/bin/python # -*- coding:utf-8 -*- import struct def btea(v, n, k): #xxtea加密算法 MX = lambda: ((z>>5)^(y<<2)) + ((y>>3)^(z<<4))^(sum^y) + (k[(p & 3)^e]^z) u32 = lambda x: x & 0xffffffff y = v[0] sum = 0 DELTA = 0x9e3779b9 if n > 1: z = v[n-1] q = 6 + 52 / n while q > 0: q -= 1 sum = u32(sum + DELTA) e = u32(sum >> 2) & 3 p = 0 while p < n - 1: y = v[p+1] z = v[p] = u32(v[p] + MX()) p += 1 y = v[0] z = v[n-1] = u32(v[n-1] + MX()) return True elif n < -1: n = -n q = 6 + 52 / n sum = u32(q * DELTA) while sum != 0: e = u32(sum >> 2) & 3 p = n - 1 while p > 0: z = v[p-1] y = v[p] = u32(v[p] - MX()) p -= 1 z = v[n-1] y = v[0] = u32(v[0] - MX()) sum = u32(sum - DELTA) return True return False if __name__ == '__main__': #简单试验 print "key", "1234567890123456" key = struct.unpack("=iiii", "1234567890123456") v = [110, 111, 112, 113] print v btea(v, 4, key) print v btea(v, -4, key) print v
测试
admin$ python xxtea.py key 1234567890123456 [110, 111, 112, 113] [2210921364, 249748794, 3317857568, 1737089717] [110, 111, 112, 113] admin$
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- 用ASP编写的加密和解密类
- Ruby实现的矩阵连乘算法
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- C#插入法排序算法实例分析
- BAT加密工具 EncryBat 非编译型bat批处理加密方案与代码
- C#对称加密(AES加密)每次生成的结果都不同的实现思路和代码实例
- SQLServer 2008中的代码安全(一) 存储过程加密与安全上下文
- 实例讲解SQL Server加密功能
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#实现对文件进行加密解密的方法
- C#实现数据包加密与解密实例详解
- C#冒泡法排序算法实例分析
- C#最简单的字符串加密解密方法
- 算法练习之从String.indexOf的模拟实现开始
- C#加密app.config中连接字符串的方法
- C#算法之关于大牛生小牛的问题
- C#使用伪随机数实现加密用户密码的方法