亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

c++base64編解碼使用示例

2020-01-26 15:36:56
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
static const char b64_table[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const char reverse_table[128] =
{
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
    52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
    64,  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, 64, 64, 64, 64, 64,
    64, 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, 64, 64, 64, 64, 64
};

unsigned char *base64_encode(unsigned char *bindata,size_t inlen,unsigned char **out,size_t *outlen)
{
    size_t _outlen = *outlen;
    unsigned char *_out = NULL;
    size_t out_pos = 0;

    if(NULL == *out)
    {
        _outlen = (inlen / 3 + (inlen%3 != 0)) * 4 + 1;
        _out = malloc(_outlen);
    }
    else
    {
        _outlen = *outlen;
        _out = *out;
    }

    memset(_out,'=',_outlen);
    _out[_outlen-1] = 0;

    unsigned int bits_collected = 0;
    unsigned int accumulator = 0;
    for(int i = 0; i < inlen; i++)
    {
        accumulator = (accumulator << 8) | (bindata[i] & 0xffu);
        bits_collected += 8;
        while (bits_collected >= 6)
        {
            bits_collected -= 6;
            _out[out_pos++] = b64_table[(accumulator >> bits_collected) & 0x3fu];
        }
    }

    if(bits_collected >= 6)
    {
        if(NULL == *out)
        {
            free(_out);
        }
        return NULL;
    }

    if (bits_collected > 0)
    {
        // Any trailing bits that are missing.
        accumulator <<= 6 - bits_collected;
        _out[out_pos++] = b64_table[accumulator & 0x3fu];
    }

    *outlen = _outlen;
    *out = _out;
    return _out;
}

unsigned char *base64_decode(unsigned char *bindata,size_t inlen,unsigned char **out,size_t *outlen)
{
    size_t _outlen = *outlen;
    unsigned char *_out = NULL;
    int bits_collected = 0;
    unsigned int accumulator = 0;
    size_t out_pos = 0;

    if(NULL == *out)
    {
        _outlen = inlen;
        _out = malloc(_outlen);
    }
    else
    {
        _outlen = *outlen;
        _out = *out;
    }

    int c = 0;
    for(int i = 0; i < inlen; i++)
    {
        c = bindata[i];
        if (isspace(c) || c == '=')
        {
            // Skip whitespace and padding. Be liberal in what you accept.
            continue;
        }
        if ((c > 127) || (c < 0) || (reverse_table[c] > 63))
        {
            return NULL;
        }
        accumulator = (accumulator << 6) | reverse_table[c];
        bits_collected += 6;
        if (bits_collected >= 8)
        {
            bits_collected -= 8;
            _out[out_pos++] = (char)((accumulator >> bits_collected) & 0xffu);
        }
    }

    *outlen = _outlen;
    *out = _out;
    return _out;
}

int main(int argc,char *argv[])
{
    unsigned char *str = argv[1];
    unsigned char *out = 0;
    size_t len = 0;
    printf("%s/n",base64_encode(str,strlen(str),&out,&len));
    unsigned char *_out = 0;
    size_t _len = 0;
    printf("%s/n",base64_decode(out,strlen(out),&_out,&_len));
    return 0;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲国产成人| 高跟丝袜欧美一区| 欧美在线视频免费观看| 中文字幕在线观看日韩| 国产精品一区二区av影院萌芽| 国产精选久久久久久| 欧美大尺度电影在线观看| 国语自产精品视频在免费| 久久精品中文字幕免费mv| 91超碰中文字幕久久精品| 欧美成人精品激情在线观看| 97国产一区二区精品久久呦| 欧美日韩免费在线| 91精品国产色综合| 国产精品日韩在线播放| 日韩美女在线观看| 日韩成人av网址| 欧美美女15p| 国产一区二区三区在线| 羞羞色国产精品| 精品久久中文字幕| 91亚洲精品在线| 中文字幕av一区二区三区谷原希美| 国产成人精品免费视频| 久久在线免费观看视频| 亚洲老头同性xxxxx| 精品视频久久久| 伊人伊人伊人久久| 海角国产乱辈乱精品视频| 在线色欧美三级视频| 亚洲日韩欧美视频一区| 亚洲天堂免费视频| 亚洲精品福利视频| 57pao精品| 亚洲国模精品私拍| 九九热精品视频在线播放| 国产精品成人av性教育| 国产亚洲欧美另类中文| 国产主播喷水一区二区| 有码中文亚洲精品| 狠狠做深爱婷婷久久综合一区| 欧美激情欧美激情在线五月| 亚洲福利在线播放| 中文字幕亚洲字幕| 国产精品第三页| 亚洲自拍小视频免费观看| 国产一区二区动漫| 亚洲午夜性刺激影院| 国产亚洲欧美一区| 欧美最近摘花xxxx摘花| 91精品国产自产在线老师啪| 欧美另类暴力丝袜| 欧美成年人视频网站| 亚洲免费伊人电影在线观看av| 中文字幕日韩欧美| 51ⅴ精品国产91久久久久久| 欧美黑人巨大精品一区二区| 国产福利精品在线| 亚洲精品美女在线观看播放| 国产成人在线一区| 亚洲成年网站在线观看| 国产精品久久久久福利| 日韩在线一区二区三区免费视频| 色香阁99久久精品久久久| 久久99精品久久久久久噜噜| 久久精品国产清自在天天线| 欧美黑人极品猛少妇色xxxxx| 久久人人爽人人爽人人片亚洲| 久久精品视频播放| 4438全国成人免费| 国产精品久久久久久久久久久久久| 久久网福利资源网站| 国产自摸综合网| 日韩精品视频在线观看网址| 亚洲xxx视频| 欧美精品www在线观看| 超薄丝袜一区二区| 亚洲国产精品久久91精品| 日本精品一区二区三区在线播放视频| 国产69精品久久久久9999| 中文字幕av一区二区三区谷原希美| 色青青草原桃花久久综合| 2021久久精品国产99国产精品| 97精品国产97久久久久久春色| 精品国产福利视频| 久久久女女女女999久久| 亚洲美女视频网| 在线电影av不卡网址| 欧美在线观看网址综合| 九九九久久国产免费| 国产日韩欧美在线| 久久影院在线观看| 久久精品视频网站| 高清欧美性猛交xxxx| 久久久久久欧美| 国产精品亚洲第一区| 国产日韩欧美影视| 欧美中文字幕精品| 91av在线免费观看视频| 亚洲精品www久久久| 疯狂蹂躏欧美一区二区精品| 国产精品日日摸夜夜添夜夜av| 欧美日韩日本国产| 亚洲精品国产美女| 日韩中文字幕国产精品| 久久久天堂国产精品女人| 亚洲第一精品夜夜躁人人躁| 欧美黑人一区二区三区| 97久久国产精品| 成人福利在线观看| 日韩在线视频中文字幕| 亚洲图片欧洲图片av| 欧美黑人又粗大| 亚洲最大的av网站| 国产精品日日摸夜夜添夜夜av| 国产精品久久久久久久久久久久| 亚洲毛茸茸少妇高潮呻吟| 亚洲三级 欧美三级| 亚洲大尺度美女在线| 国产玖玖精品视频| 在线观看国产精品日韩av| 日韩欧美在线视频免费观看| 国内揄拍国内精品| 自拍偷拍亚洲精品| 91av在线播放| 成人国产精品免费视频| 亚洲视频在线观看免费| 日韩视频免费在线观看| 欧美精品在线网站| 欧美国产视频日韩| 美女黄色丝袜一区| 久久精品国产久精国产思思| 亚洲国产精品久久久久| 国产午夜精品视频| 亚洲最大的网站| 国产精品成人播放| 成人综合国产精品| 国产精品99久久久久久久久| 色综合伊人色综合网| 欧美精品18videos性欧| 国产+人+亚洲| 视频一区视频二区国产精品| 久久av红桃一区二区小说| 国产亚洲精品美女| 中文字幕亚洲一区在线观看| 97成人超碰免| 亚洲人免费视频| 亚洲人成在线观看网站高清| 亚洲精品视频免费| 91免费精品国偷自产在线| 国内精品免费午夜毛片| 国产成人精品久久二区二区91| 久久精品亚洲国产| 97视频在线观看免费高清完整版在线观看| 亚洲www永久成人夜色| 在线看片第一页欧美| 成人欧美在线观看| 欧美激情久久久| 欧美丝袜第一区| 日韩中文娱乐网| 亚洲欧美日韩在线高清直播| 欧美日韩一区二区精品| 欧美影院成年免费版| 日韩精品在线视频美女|