|
发表于 2011-1-8 17:31:03
|
显示全部楼层
看看这个是易语言的
.版本 2
.支持库 iext
.子程序 解密账号, 文本型
.参数 账号, 文本型
.局部变量 码表1, 文本型
.局部变量 码表2, 字节集
.局部变量 码表3, 整数型, , "4"
.局部变量 账号长度, 整数型
.局部变量 计次, 整数型
.局部变量 找到位置, 整数型
.局部变量 数1, 整数型
.局部变量 数2, 整数型
.局部变量 结果文本, 文本型
码表1 = “9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST”
码表2 = { 17, 52, 201, 35, 117, 24, 215, 226, 18, 53, 41, 43, 236, 182, 35, 25 }
码表3 [1] = 4
码表3 [2] = 5
码表3 [3] = 0
码表3 [4] = 37
账号长度 = 取文本长度 (账号)
.计次循环首 (账号长度, 计次)
找到位置 = 寻找文本 (码表1, 取文本中间 (账号, 计次, 1), 1, 假)
.如果 (找到位置 ≠ -1)
.判断开始 (计次 ≤ 16)
数1 = 码表2 [计次]
.默认
数1 = 计次 - 1
数2 = 16
汇编 (数1, 数2)
数1 = 码表2 [数2 + 1]
.判断结束
数2 = 码表3 [4]
数2 = 数2 + 码表3 [4]
数2 = 数2 + 码表3 [4]
数1 = 位异或 (数1, 数2)
数1 = 位异或 (数1, 码表3 [3])
数1 = 数1 + 找到位置 - 1
数2 = 62
汇编 (数1, 数2)
码表3 [1] = 数1
码表3 [2] = 数2
结果文本 = 结果文本 + 取文本中间 (码表1, 数2 + 1, 1)
数2 = 数2 + 9433
码表3 [4] = 位异或 (码表3 [4], 数2)
.否则
结果文本 = 结果文本 + 取文本中间 (账号, 计次, 1)
.如果结束
码表3 [3] = 码表3 [3] + 5
.计次循环尾 ()
结果文本 = 地区代码.标题 + 结果文本
返回 (结果文本)
.子程序 汇编
.参数 a, 整数型, 参考
.参数 b, 整数型, 参考
置入代码 ({ 139, 77, 8, 139, 1, 139, 125, 12, 153, 247, 63, 137, 1, 137, 23, 90 }) |
|