首页
社区
课程
招聘
[求助]这个貌似base32解码的算法是什么?逆算法又是什么?
发表于: 2013-5-19 21:43 7178

[求助]这个貌似base32解码的算法是什么?逆算法又是什么?

2013-5-19 21:43
7178
base32是32个可见字符,而这里却是34个: "123456789abcdefghijklmnpqrstuvwxyz"。看算法有点象base32解码过程,是不是自定义的算法?奇怪的是如果取5个bit位则是32编码呀,34个字符必然突破5个bit位吧,搞不懂了,其逆算法编码过程又是什么呢?这里向高手求教了。

(对不起,刚刚代码有误,现纠正了)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
base34Str = "123456789abcdefghijklmnpqrstuvwxyz";
/*
 * decode()将base34码串解密(结果长度=可见字符串长度 * 5 / 8)
 * 参数szReg              -- base34码可见字符串
 * 参数Len_Of_Reg    -- strlen(szReg)
 * 参数outStr              -- 输出串
*/
int decode(const char *szReg, int Len_Of_Reg, char *outStr)
{
    int i,m,n,iMin,iLen;
    char ch_1, ch_2;
    char index[256] = {0};
 
    i = 0;
    while (i < Len_Of_Reg)
    {
        ch_3 = tolower(szReg[i]);
        j = 0;
        while (j < Len_Of_base34Str)
        {
            if (base34Str[j] == ch_3)
            {
                index[i] = j;
                break;
            }
            j++;
        }
        i++;
    }
 
    n = 0;
    i = 0;
    iLen = 0;
    while (i < Len_Of_Reg)
    {
        m = 0;
        ch_2 = 0;
        while (i < Len_Of_Reg)
        {
            ch_1 = index[i];
            iMin = (8 - m) > (5 - n) ? (5 - n) : (8 - m);
 
            if (n <= m)
                ch_1 <<= m;
            else
                ch_1 >>= n;
 
            ch_2 |= ch_1;
 
            n += iMin;
            m += iMin;
 
            if (n >= 5)
            {
                i++;
                n = 0;
            }
            if (m >= 8) break;
        }
        outStr[iLen] = ch_2;
        iLen++;
    }
    outStr[iLen] = 0;
    return iLen;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (3)
雪    币: 257
活跃值: (28)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
难道最后两字符“yz”会是摆设?
2013-5-19 22:26
0
雪    币: 225
活跃值: (463)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
搞几个样本就知道了
2013-5-20 09:03
0
雪    币: 257
活跃值: (28)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
这是分析出来的解码过程,问题是我不知编码过程该怎么写。所以没办法搞样本验证啊
2013-5-20 14:09
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册