您的位置:首页 > 其它

base64编码3字符转化4字符实现

2015-07-14 16:36 267 查看
最近学习SMTP协议遇到base64编码加密。特学习一下。尝试自己实现一下转化。

base64编码原理:

1)base64的编码都是按字符串长度,以每3个8bit的字符为一组,

2)然后针对每组,首先获取每个字符的ASCII编码,

3)然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节

4)然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节

5)然后将这4个8bit的字节转换成10进制,对照Base64编码表 ,得到对应编码后的字符。

//base64编码表

char base64_enc_map[] =

{

'A','B','C','D','E','F','G','H','I','J','K',

'L','M','N','O','p','Q','R','S','T','U',

'V','W','X','Y','Z','a','b','c','d','e',

'f','g','h','i','j','k','L','m','n','o',

'p','q','r','s','t','u','v','w','x','y',

'z','0','1','2','3','4','5','6','7','8',

'9','+','/'

};

unsigned char c1,c2,c3;

unsigned char d1,d2,d3,d4;

unsigned char c11,c12,c21,c22,c31,c32;//存储字符分割后的前部分和后部分

c11 = c1&0xfc;

c12 = c1&0x03;

c21 = c2&0xf0;

c22 = c2&0x0f;

c31 = c3&0xc0;

c32 = c3&0x3f;

d1 = c11>>2;

d2 = c12<<4+c21>>4;

d3 = c22<<2+c31<<6;

d4 = c32;

d1 = base64_enc_map[d1];

d2 = base64_enc_map[d2];

d3 = base64_enc_map[d1];

d4 = base64_enc_map[d1];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: