当前位置:首页 > 开发 > 编程语言 > 编码 > 正文

我程序中用到的urldecode和base64decode,MD5

发表于: 2015-04-25   作者:bitcarter   来源:转载   浏览:
摘要: 这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码: string Base64Decode(const char* Data,int DataByte,int& OutByte) { //解码表 const char DecodeTable[] = { 0, 0, 0, 0, 0, 0
这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
    //解码表
    const char DecodeTable[] =
    {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        62, // '+'
        0, 0, 0,
        63, // '/'
        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // '0'-'9'
        0, 0, 0, 0, 0, 0, 0,
        0, 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, // 'A'-'Z'
        0, 0, 0, 0, 0, 0,
        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 // 'a'-'z'
    };
    //返回值
    string strDecode;
    int nValue;
    int i= 0;
    while (i < DataByte)
    {
        if (*Data != '\r' && *Data!='\n')
        {
            nValue = DecodeTable[*Data++] << 18;
            nValue += DecodeTable[*Data++] << 12;
            strDecode+=(nValue & 0x00FF0000) >> 16;
            OutByte++;
            if (*Data != '=')
            {
                nValue += DecodeTable[*Data++] << 6;
                strDecode+=(nValue & 0x0000FF00) >> 8;
                OutByte++;
                if (*Data != '=')
                {
                    nValue += DecodeTable[*Data++];
                    strDecode+=nValue & 0x000000FF;
                    OutByte++;
                }
            }
            i += 4;
        }
        else// 回车换行,跳过
        {
            Data++;
            i++;
        }
     }
    return strDecode;
}


char * Cgi_urldecode(char * url)
        {
            int len = strlen(url);

            char *dest = url;
            char *data = url;

            while (len--) {
                if (*data == '+')
                    *dest = ' ';
                else if (*data == '%' && len >= 2 && isxdigit((int) *(data + 1)) && isxdigit((int) *(data + 2))) {

                    *dest = (char) htoi(data + 1);
                    data += 2;
                    len -= 2;
                } else
                    *dest = *data;
                data++;
                dest++;
            }
            *dest = '\0';
            return url ;
}

int htoi(char *s)
{
            int value;
            int c;

            c = ((unsigned char *)s)[0];
            if (isupper(c))
                c = tolower(c);
            value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;

            c = ((unsigned char *)s)[1];
            if (isupper(c))
                c = tolower(c);
            value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;

            return (value);
}

我程序中用到的urldecode和base64decode,MD5

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
第一个是微软的一个小东西,利用这个能够很轻松的掌握网页的DOM结构,对应那些结构比较复制的网页分析
介绍两个b/s开发中我常用到的小工具 第一个是微软的一个小东西,利用这个能够很轻松的掌握网页的DOM
这次实验主要是开发基于.net framework的窗体应用程序。我感觉这次实验让我学到了挺多东西。我做的
Generalize Type 对对象的声明可用。 Use Supertype Where Possible 对类可用。 Correct Identation
“书到用时方恨少”,这就是现在我的写照。原来并没有在意过数据库中的数据类型,在建表的时候,也
Generalize Type 对对象的声明可用。 Use Supertype Where Possible 对类可用。 Correct Identation
Generalize Type 对对象的声明可用。 Use Supertype Where Possible 对类可用。 Correct Identation
“书到用时方恨少”,这就是现在我的写照。原来并没有在意过数据库中的数据类型,在建表的时候,也
1: Android-PullToRefresh https://github.com/chrisbanes/Android-PullToRefresh 效果图: 2: Sl
MD5加密实现 结 package com.pb; import java.io.UnsupportedEncodingException; import java.secur
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号