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

最近学习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];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值