Base64演算法的實現原理

2021-09-28 22:33:57 字數 1099 閱讀 2658

電子郵件傳輸演算法-------base64

定義:base64是一種基於64隔字元的編碼演算法,根據rfc 2045的定義:「base64內容傳送編碼是一種任意8位位元組序列組合的描述形式,這種形式不易被別人直接識別」。經過base64編碼後的資料會比原始資料略長,為原來的4/3倍。經base64編碼後的字串的字元數是以4為單位的整數倍。

rfc2045還規定,在電子郵件中,每行為76個字元,每行末需新增乙個回車換行(「\r\n」),不論每行是否足夠76個字元,都要新增乙個回車換行符。但在實際應用中,往往根據實際需要忽略了這一要求。

在上述的對映表中,value指的是10進製數,而encoding指的是字元,工映**64個字元,這也是base64演算法名稱的由來。

表中的最後乙個字元是=,它是用來補位的。

為了能夠在http請求中以get方式獲取到請求資料。base64衍生了乙個類叫做urlbase64,urlbase64的演算法與base64的區別在於上面的對映符的第62,63個字元,它分別用了"-"於「_」來替換base64的"+"和"/"。最後乙個字元,有兩種建議:一種是替換為"~",另一種是建議替換為"."。由於"~"符號和檔案系統衝突,不建議使用。而對於"."符號,如果連續出現兩次,則認為是有錯誤。

base64不是加密演算法

base64的實現原理:

1)將字串以字元為單位,轉化為對應的ascll碼。

2)將獲得的ascll碼轉換為8位的二進位製碼。

3)對獲得的二進位製碼進行分組轉換:每3個8位二進位制碼位一組,轉換為每4個6位二進位制碼位一組(不足6位時低位補0),3個8位二進位製碼和4個6位二進位製碼的長度都是24.

4)對獲得的4個6位二進位製碼進行高位補0,補充為4個8位的二進位製碼。

5)將獲得4個8進製碼轉換為10進製碼。

6)對照上述的對映表,找出對應的base64編碼的字元,組成字串,若字串的長度不足位3的倍數,則在字串後面補充"="符,最多補充的"="不超過兩個。

例子:

BASE64演算法實現

cstring base64encode lpctstr lpszsrc 56 63 unsigned int itest lpctstr pinbuffer lpszsrc int nsize int tcslen lpszsrc char poutbuffer new char nsize 3 ...

Base64的原理及實現

base64編碼原理 第一步,每三個位元組作為一組,一共是24位二進位制數。第二步,將24位二進位制數分為四組,每組有6位二進位制。第三步,在每組前面加兩個0 即00 擴充套件成32個二進位制位,即四個位元組。以上三步將3個位元組擴充套件成4個位元組。第四步,根據base64的編碼表將其編碼,編碼表...

C 處理base64 以及base64的原理分析

base64的原理,base64的碼表只有64個字元,如果要表達64個字元的話,使用6的bit即可完全表示 2的6次方為64 因為base64的編碼只有6個bit即可表示,而正常的字元是使用8個bit表示,8和6的最小公倍數是24,所以4個base64字元可以表示3個標準的ascll字元 publi...