找回密码
 加入
搜索
楼主: gzh888666

[效率算法] 希望各位高手进来,将这个段代码转换成AU3,造福网通用户。(已解决)

 火.. [复制链接]
 楼主| 发表于 2011-1-8 12:14:43 | 显示全部楼层
本帖最后由 gzh888666 于 2011-1-8 12:24 编辑

回复 14# sxd

最后加了EndFunc ;==>CNCMAXDecode
感谢您的代码,看来比较复杂,调用两个自定义的函数都无法正常使用,函数返回还是有问题,希望能检查一下代码!
我先随便贴两段转换后的结果,方便验证!
比如加密后的用户名是: 15003722968
那么解码后的用户名是: 2:3w97yRzyhLk
比如加密后的用户名是: 15837214567
那么解码后的用户名是: 2:3w7yWHmolm8
发表于 2011-1-8 16:16:57 | 显示全部楼层
回复 14# sxd


    学习学习
发表于 2011-1-8 16:54:34 | 显示全部楼层
有没有电信的?它这个是用来封路由器的。
发表于 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 })
发表于 2011-1-8 21:18:35 | 显示全部楼层
你问客服他会告诉的不是?
发表于 2011-1-9 20:00:41 | 显示全部楼层
太厉害了,这个论坛有如此多的热心的高手,太好了
发表于 2011-1-10 00:56:10 | 显示全部楼层
嗯 没测试 现在看看 错误很多  但是.加密里 只有一个1: 我不知道 2:是怎么来的 函数有问题
发表于 2011-1-10 10:21:30 | 显示全部楼层
这要是c++我把脑袋给楼主,明显不是c++,上面写着php嘛,
发表于 2011-1-10 11:33:26 | 显示全部楼层
高手啊,这都是
发表于 2011-1-10 11:38:09 | 显示全部楼层
在sxd版的代码基础微改一下
;~ 比如加密后的用户名是: 15003722968
;~ 那么解码后的用户名是: 2:3w97yRzyhLk
;~ 比如加密后的用户名是: 15837214567
;~ 那么解码后的用户名是: 2:3w7yWHmolm8
#include <array.au3>
;$aa=StringSplit('15837214567','',2)
MsgBox(0, 0, CNCMAXEncode(InputBox("input","输入",'15837214567')))

Func CNCMAXEncode($input)
        If IsString($input) Then $input = StringSplit($input, '', 2)
        $DicStr = "9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST"
        Dim $DicB[16]
        $DicB[0] = 0x11
        $DicB[1] = 0x34
        $DicB[2] = 0xC9
        $DicB[3] = 0x23
        $DicB[4] = 0x75
        $DicB[5] = 0x18
        $DicB[6] = 0xD7
        $DicB[7] = 0xE2
        $DicB[8] = 0x12
        $DicB[9] = 0x35
        $DicB[10] = 0x29
        $DicB[11] = 0x2B
        $DicB[12] = 0xEC
        $DicB[13] = 0xB6
        $DicB[14] = 0x23
        $DicB[15] = 0x19

        $num4 = 0x25
        Dim $di = 0, $var2 = 0, $index = 0, $var3 = 0
        Dim $outstr[21]
        $outstr[0] = ""

        For $i = 0 To UBound($input) - 1
                For $j = 0 To StringLen($DicStr) - 1
                        If $input[$i] == StringMid($DicStr, $j + 1, 1) Then
                                If $i >= 0x10 Then
                                        $di = $DicB[Mod($i, 0x10)]
                                Else
                                        $di = $DicB[$i]
                                EndIf
                                $var2 = $num4 * 3
                                $index = Mod((BitXOR(BitXOR($di, $var2), $var3) + $j), 0x3e)
                                $outstr[$i] = StringMid($DicStr, $index + 1, 1)
                                $var2 = $index
                                $num4 = BitXOR($num4, $var2 + 0x24d9)
                        EndIf
                Next

                If $i >= UBound($outstr) Then
                        ReDim $outstr[$i]
                        $outstr[$i] = $input[$i]
                EndIf

                $var3 = $var3 + 5
        Next

        $out = ""

        For $k = 0 To UBound($outstr) - 1
                $out = $out & $outstr[$k]
        Next

        Return "2:" & $out
EndFunc   ;==>CNCMAXEncode

评分

参与人数 1金钱 +40 贡献 +10 收起 理由
KLU3K + 40 + 10

查看全部评分

 楼主| 发表于 2011-1-10 11:59:51 | 显示全部楼层
回复 25# 3mile

    再次感谢3mile、sxd两位大大。测试已经转码成功了,到家后研究一下代码!
发表于 2011-1-10 15:56:01 | 显示全部楼层
向楼主认真学习学习!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-14 02:57 , Processed in 0.072591 second(s), 17 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表