base64算法是将加密字符串中的每个字符转换为二进制后拼接在一起后,将二进制以6位为一组做为base64表的下标进行取值对应,所以一般base64中的4个字符对应明文的3字符的内容。
base64的加密流程一般如下:
建立base64编码映射表,标准的base64编码表
const char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
base64编码表也可以自行定义。
以三个字符一组,遍历字符串,对第一个字符进行左移16位,对第二个字符左移8位,第三个字符不做任何操作,左移完成后结果相加得到24位二进制,按照6位一组进行base64取值,分别取4组。取值过程如下:
第一组将以上步骤得到的24位二进制内容,右移18位与0x3f进行&操作,保留低6位,得到第一组的base64表的下标进取值;
第二组将24位二进制内容右移12位后0x3f进行&操作,得到第二组的base64表的下标进行取值
第三组右移6位后0x3f进行&操作,得到第三组的base64表的下标进行取值
第4组只与0x3f进行&操作,得到第四组的base64表的下标进行取值
循环取值将得到的结果拼接存储后得到最终的base64的编码结果,至此base64编码过程结束,需要注意的是有些,base64会在最后拼接上两个==号做为结束符号。