說明
HTTP將Base64編碼用于基本的認證和摘要認證。
其可以方便的將用戶的任何輸入轉換成只包含特定字符的安全格式,服務于網絡通信過程。
特點
- 1)可以將任意的二進制數據進行Base64編碼。
- 2)所有的數據都能被編碼為并只用65個字符就能表示的文本文件。
- 3)編碼后的65個字符包括AZ,az,0~9,+,/,=
- 4)對文件或字符串進行Base64編碼后將比原始大小增加33%
- 5)能夠逆運算
- 6)不夠安全,但卻被很多加密算法作為編碼方式
Base64索引表:
base64索引表.png
Base64編碼原理
- 1)將所有字符轉化為ASCII碼;
- 2)將ASCII碼轉化為8位二進制;
- 3)將二進制3個歸成一組(不足3個在后邊補0)共24位,再拆分成4組,每組6位;
- 4)統一在6位二進制前補兩個0湊足8位;
- 5)將補0后的二進制轉為十進制;
-
6)從Base64編碼表獲取十進制對應的Base64編碼;
編碼“Man”
Man編碼.png
處理過程
- 1.轉換的時候,將三個byte的數據,先后放入一個24bit的緩沖區中,先來的byte占高位。
- b.數據不足3byte的話,則剩下的bit用0補足。每次取出6個bit,按照其值選擇查表選擇對應的字符作為編碼后的輸出。
- c.不斷進行,直到全部輸入數據轉換完成。
- d.如果最后剩下兩個輸入數據,在編碼結果后加1個“=”;
- e.如果最后剩下一個輸入數據,編碼結果后加2個“=”;
- f.如果沒有剩下任何數據,就什么都不要加,這樣才可以保證資料還原的正確性。
下面這段摘自維基百科的:
如果要編碼的字節數不能被3整除,最后會多出1個或2個字節,那么可以使用下面的方法進行處理:先使用0字節值在末尾補足,使其能夠被3整除,然后再進行base64的編碼。在編碼后的base64文本后加上一個或兩個'='號,代表補足的字節數。也就是說,當最后剩余一個八位字節(一個byte)時,最后一個6位的base64字節塊有四位是0值,最后附加上兩個等號;如果最后剩余兩個八位字節(2個byte)時,最后一個6位的base字節塊有兩位是0值,最后附加一個等號。 參考下表:
base64編碼處理.png
'A'base64編碼結果:'QQ =='
'BC'base64編碼結果:QKM=
終端驗證Base64.png