`

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

阅读更多
这里是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);
}
分享到:
评论

相关推荐

    Base64的js插件

    5. 可能还包含其他辅助方法,如检查字符串是否为Base64编码,或者处理URL安全的Base64(即替换'/'为'_','+'为'-')。 在描述中提到了"导入时别忘了导入jQuery",这意味着这个Base64插件可能依赖于jQuery库。jQuery...

    Base64_javascript_base64_

    考虑到浏览器兼容性和性能优化,开发者可能会选择自定义Base64库,如压缩包中的`Base64.js`。这个库提供了更全面的功能,包括URL安全的Base64编码(替换"+"和"/"为"-"和 "_")以及对非ASCII字符的支持。 ```...

    base64的java实现方法

    5. **自定义Base64编码器和解码器** 如果你需要更定制化的Base64编码,可以创建自己的编码器和解码器。例如,如果你想改变编码时的分隔符或者不希望有填充字符,可以这样做: ```java import java.util.Base64; ...

    Base64编码、解码

    在`Base64Decode.java`中,程序接收已经Base64编码的字符串,然后使用`Base64.getDecoder().decode()`方法将字符串解码回原始的二进制数据。解码后,原始数据可以被写入文件或进行其他处理。 Base64编码的效率较低...

    asp_base64.rar

    5. **性能考虑**:虽然自定义的Base64函数方便实用,但在大型项目中,可能会考虑使用更高效的解决方案,如.NET Framework或JScript .NET,它们提供了内置的Base64编码和解码支持。 6. **安全性**:在使用Base64编码...

    c语言实现base64编解码

    - Base64编码广泛应用于URL、电子邮件、XML、JSON等场景,因为它可以将二进制数据转换为纯文本格式。 - 在实现中,还可以考虑使用动态内存分配以处理任意大小的数据,或者增加线程安全支持,使其适用于多线程环境...

    js-base64 20150121_javascriptbase64_carry9i1_jsbase64_64cacom_

    使用这个JavaScript Base64库时,开发者通常可以通过简单的API调用来完成编码和解码操作,比如`Base64.encode()`和`Base64.decode()`。这样的库在处理图像、XML、JSON等数据格式在网络上传输时非常有用,因为这些...

    base64js:在浏览器中拖放base64字符串生成器的用户界面

    它将任何可打印的ASCII字符转换为一个由64个字符组成的特定字符集,包括A-Z、a-z、0-9、"+"和"/",以及在URL编码中用到的"="作为填充字符。在JavaScript中,base64编码和解码可以通过内置的`btoa()`和`atob()`函数...

    基于Delphi的Base64加密算法演示代码

    总的来说,Base64在Delphi中实现并不复杂,主要涉及到字符串与字节序列之间的转换。ksaiy的代码示例是一个很好的学习资源,可以帮助开发者更好地理解和应用Base64编码。在实际项目中,除了基本的编码和解码功能外,...

    php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法

    $decrypted_tb = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($crypttext_tb), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); ``` 这里的`rtrim`函数用于去除解密后可能存在的额外空字符。 ...

    python实现人像动漫化的示例代码

    f.write(base64.b64decode(img_data)) f.close() ``` 至此,你就成功地使用Python和百度AI的API将一张人像照片转换成了动漫风格。这个过程可以应用于批量处理大量图片,例如创建个性化的动漫头像或制作有趣的艺术...

    用js进行url编码后用php反解以及用php实现js的escape功能函数总结

    但是,这种编码方式在PHP中用`urldecode()`或`base64_decode()`并不能直接解码。因此,作者提出了一个自定义的PHP函数`js_unescape()`来处理这种特殊编码。 `js_unescape()`函数的核心逻辑是判断字符串中是否以`%u`...

    java sqlserver text 类型字段读取方法

    byte[] byte_content = Base64.decode(contentBase64); // 解码为字节数组 ``` 5. **生成文件**: 最后,使用`byte_content`生成文件。这里创建一个名为`generateFile()`的方法,接受字节数组、目标文件路径和...

    C#编程经验技巧宝典

    4 &lt;br&gt;0008 为程序设置版本和帮助信息 4 &lt;br&gt;0009 设置Windows应用程序启动窗体 5 &lt;br&gt;0010 设置Web应用程序起始页 5 &lt;br&gt;0011 如何设置程序的出错窗口 5 &lt;br&gt;0012 如何进行程序调试 6 ...

Global site tag (gtag.js) - Google Analytics