Base64演算法的前世今生(一)

2021-06-12 00:08:42 字數 1041 閱讀 4163

base64演算法的由來

base64演算法主要最早用於解決電子郵件傳輸問題。在早期,由於歷史問題,電子郵件只允許傳輸ascii碼字元

。當傳輸非ascii碼時,閘道器很可能將非ascii碼的二進位制位調整,即將非ascii碼的8位二進位制的最高位置0。當使用者收到郵件時,可想而知,收到的就是 乙份亂碼的郵件。

base6演算法的定義

根據rfc2045

翻譯過來就是:base64內容傳輸編碼是一種以任意8位位元組序列組合的描述形式,這種形式不易被人直接識別。經過base64編碼後的資料會比原始資料略長,為原來的4/3。經過base64編碼後的字串的字元數是以4為單位的整數倍。

字元對映表:

共64的字元,這也是base 64名稱的由來,其中最後乙個(pad)=是用來補位的。

base64還有幾個同胞兄弟,base32 base16 ,為了能在http請求中個以get方式傳遞二進位制資料,由此衍生出來了urlbase64。

base是否是加密演算法

關於這個問題,首先來看。

base64是將源二進位制資料經過轉化後與字元對映表相對應,得到秘文。

雖然如此,但是個人還是認為這不是加密演算法。base演算法公開,這一點與柯克霍夫原則並不違背,但是充當金鑰的字元對映表公開,直接違背了柯克霍夫原則,而且,其加密強度並不高。

但是,base64也算是加密演算法??(你2了吧)因為我們可以將字元對映表進行手動調整,這樣別人就無法解密我們的資料,(但加密程度還是不夠,依然能夠被破解)

base64實現原理:

且看下回

Base64編碼的前世今生

base64是一種基於64個可列印字元來表示二進位制資料的表示方法。由於2的6次方等於64,所以每6個位元為乙個單元,對應某個可列印字元。三個位元組有24個位元,對應於4個base64單元,即3個位元組可表示4個可列印字元。它可用來作為電子郵件的傳輸編碼。在base64中的可列印字元包括字母a z ...

Base64編碼演算法

base64要求把每三個8bit的位元組轉換為四個6bit的位元組 3 8 4 6 24 然 後把6bit再添兩位高位0,組成四個8bit的位元組,也就是說,轉換後的字串理 論上將要比原來的長1 3。轉換後,我們用乙個碼表來得到我們想要的字串 也就是最終的base64編碼 這個表是這樣的 0 a 1...

BASE64演算法實現

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