gzh888666 发表于 2011-1-8 12:14:43

本帖最后由 gzh888666 于 2011-1-8 12:24 编辑

回复 14# sxd

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

柔和de黑星 发表于 2011-1-8 16:16:57

回复 14# sxd


    学习学习

tisiem 发表于 2011-1-8 16:54:34

有没有电信的?它这个是用来封路由器的。

lizhongbo 发表于 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 = 4
码表3 = 5
码表3 = 0
码表3 = 37
账号长度 = 取文本长度 (账号)
.计次循环首 (账号长度, 计次)
    找到位置 = 寻找文本 (码表1, 取文本中间 (账号, 计次, 1), 1, 假)
    .如果 (找到位置 ≠ -1)
      .判断开始 (计次 ≤ 16)
            数1 = 码表2 [计次]
      .默认
            数1 = 计次 - 1
            数2 = 16
            汇编 (数1, 数2)
            数1 = 码表2 [数2 + 1]
      .判断结束
      数2 = 码表3
      数2 = 数2 + 码表3
      数2 = 数2 + 码表3
      数1 = 位异或 (数1, 数2)
      数1 = 位异或 (数1, 码表3 )
      数1 = 数1 + 找到位置 - 1
      数2 = 62
      汇编 (数1, 数2)
      码表3 = 数1
      码表3 = 数2
      结果文本 = 结果文本 + 取文本中间 (码表1, 数2 + 1, 1)
      数2 = 数2 + 9433
      码表3 = 位异或 (码表3 , 数2)
    .否则
      结果文本 = 结果文本 + 取文本中间 (账号, 计次, 1)
    .如果结束
    码表3 = 码表3 + 5
.计次循环尾 ()
结果文本 = 地区代码.标题 + 结果文本
返回 (结果文本)

.子程序 汇编
.参数 a, 整数型, 参考
.参数 b, 整数型, 参考

置入代码 ({ 139, 77, 8, 139, 1, 139, 125, 12, 153, 247, 63, 137, 1, 137, 23, 90 })

cityofthesky 发表于 2011-1-8 21:18:35

你问客服他会告诉的不是?

xwlzx 发表于 2011-1-9 20:00:41

太厉害了,这个论坛有如此多的热心的高手,太好了

sxd 发表于 2011-1-10 00:56:10

嗯 没测试 现在看看 错误很多但是.加密里 只有一个1: 我不知道 2:是怎么来的 函数有问题

speedneeder 发表于 2011-1-10 10:21:30

这要是c++我把脑袋给楼主,明显不是c++,上面写着php嘛,

微雨湿黄昏 发表于 2011-1-10 11:33:26

高手啊,这都是

3mile 发表于 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
        $DicB = 0x11
        $DicB = 0x34
        $DicB = 0xC9
        $DicB = 0x23
        $DicB = 0x75
        $DicB = 0x18
        $DicB = 0xD7
        $DicB = 0xE2
        $DicB = 0x12
        $DicB = 0x35
        $DicB = 0x29
        $DicB = 0x2B
        $DicB = 0xEC
        $DicB = 0xB6
        $DicB = 0x23
        $DicB = 0x19

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

        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
                                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

gzh888666 发表于 2011-1-10 11:59:51

回复 25# 3mile

    再次感谢3mile、sxd两位大大。测试已经转码成功了,到家后研究一下代码!

syhw222 发表于 2011-1-10 15:56:01

向楼主认真学习学习!
页: 1 [2]
查看完整版本: 希望各位高手进来,将这个段代码转换成AU3,造福网通用户。(已解决)