完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、Base64的介绍
1、Base64加密 /* Base64加密 */ int base64_encode(const unsigned char *sourceData, char *outputData) { uint8_t index = 0; int i=0, j=0; const int len = strlen((const char *)sourceData); //每三组一个进行编码 for(; i < len; i += 3) { //第一个字节,根据源字节的第一个字节处理。 规则:源第一字节右移两位,去掉低2位,高2位补零。 index = ((sourceData >> 2) & 0x3f); outputData[j++] = base64char[index]; //第二个字节,根据源字节的第一个字节和第二个字节联合处理。规则:第一个字节高6位去掉然后左移四位,第二个字节右移四位 //即:源第一字节低2位 + 源第2字节高4位 index = ((sourceData << 4) & 0x30); if(i+1 < len) { index |= ((sourceData[i + 1] >> 4) & 0x0f); outputData[j++] = base64char[index]; } else { outputData[j++] = base64char[index]; outputData[j++] = '='; outputData[j++] = '='; break;//超出总长可以直接break } //第三个字节,根据源字节的第二个字节和第三个字节联合处理, //规则:第二个字节去掉高4位并左移两位(得高6位),第三个字节右移6位并去掉高6位(得低2位),相加即可 index = ((sourceData[i + 1] << 2) & 0x3c); if((i + 2) < len) { index |= ((sourceData[i + 2] >> 6) & 0x03); outputData[j++] = base64char[index]; //第四个字节,规则:源第三字节去掉高2位即可 index = sourceData[i + 2] & 0x3f; outputData[j++] = base64char[index]; } else { outputData[j++] = base64char[index]; outputData[j++] = '='; break; } } outputData[j] = ' |