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