簡單來說,就是用6 bit代替原來的8 bit(一個字節(jié))入蛆。
對"Man"編碼為"TWFu":
ASCII碼
標準ASCII碼從0~127共128個字符私沮。
其中0~31琉闪、127這33個字符稱為控制字符
邦泄。如0為NUL
删窒,表示空字符;1為SOH
顺囊,表示標題開始等肌索。
其余95個稱為可打印字符
。48為0
特碳,也就是數字0诚亚;65表示A
,也就是大寫字母A等测萎。
BASE64
早期的一些傳輸協議只能傳輸可打印的ASCII碼亡电,但一個字節(jié)(8個bit)的可表示范圍為0~255共256種,如果一個Byte的值超過127硅瞧,那么就無法用ASCII碼表示了。
此時BASE64應運而生恕汇。
BASE64算法只支持64個可打印字符
腕唧。包含大寫字母A~Z
,小寫字母a~z
瘾英,0~9
共62個枣接,另外兩個字符在不同的系統中有所區(qū)別,標準BASE64編碼中為+
和/
缺谴。
因為一共只有64種字符但惶,所以用6 bit足以表示所有的BASE64字符。
編碼
BASE64用6 bit可以表示了原本的8 bit字符湿蛔。但怎么用6 bit表示8 bit呢膀曾?增加字符的數量。6和8的最小公倍數是24阳啥,3 * 8 = 4 * 6添谊。這樣原來的3個字節(jié)可以用4個BASE64字符表示。也就是原來的3組拆成了4組來表示察迟,每組轉換成十進制斩狱,每個十進制對應一個BASE64字符。
將原來的3個Byte寫成24 bit扎瓶,按照高位到低位每6位組成一個BASE64字符所踊,不足24位時末位補0。當沒有匹配的8 bit字符的時候概荷,用=
填充秕岛。
對"M"編碼結果為"TQ==":
解碼
與編碼相反,只需要將對應4組6 bit分隔成3組8 bit,每組8 bit再表示成ASCII字符即可瓣蛀。
因此陆蟆,BASE64算法只是一種編碼算法,不能用于加密惋增。
Base64常用于在通常處理文本數據的場合叠殷,表示、傳輸诈皿、存儲一些二進制數據林束。