base64編碼3字元轉化4字元實現

2021-07-03 19:36:41 字數 871 閱讀 3985

最近學習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 =;

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];

字元位元組Base64編碼

上班之餘抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這裡和大家一起學習一下字元位元組 base64碼編說明 base64碼編要求把3個8位位元組 3 8 24 轉化為4個6位的位元組 4 6 24 以後在6位的面前補兩個0,成形8位乙個位元組的式形。如果剩下的字元缺乏3個位元組,則用0填充...

3 字元編碼

字元編碼 編者的話 從磁碟中讀取資料時,直接將存在檔案中的二進位制轉換成unicode的二進位制存到記憶體中,需指定乙個編碼如utf 8,前提是檔案在儲存時是以utf 8儲存的.系統中維護了一張關於utf 8到unicode的表,存檔案時,直接通過這張表將記憶體中unicode的二進位制翻譯成utf...

解決「Base 64字元陣列的無效長度」 的問題

後來分析才知道是由於位址列中的字元 沒有正確解析導致的。using system using system.data using system.configuration using system.collections using system.web using system.web.secur...