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

编程技术  /  houtizong 发布于 3年前   179
这里是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);}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客