一、原理
base64的作用是以可見字符的形式對非純文本文件進行編碼轉換, 簡而言之就是用可見字符集中的字符替換原有的二進制文件。根據Base64的索引表,字符選用了"A-Z、a-z、0-9、+、/" 64個可打印字符。占位符是"="。數值代表字符的索引,這個是標准Base64協議規定的,不能更改。64個字符用6個bit位就可以全部表示,一個字節有8個bit位,剩下兩個bit就浪費掉了,這樣就不得不犧牲一部分空間了。這里需要弄明白的就是一個Base64字符是8個bit,但是有效部分只有右邊的6個bit,左邊兩個永遠是0。下面是所有字符集:
首先確定好要編碼的字符串,並查找其對應的ASCII碼將其轉換為二進制表示,每三個8位的字節轉換為四個6位的字節(3*8=4*6=24),把6位的最高位添兩位數字0組成四個8位的字節,因此轉換后的字符串將要比編碼前的字符串長1/3。轉換后,再將二進制轉換為十進制表示。下面是字符ABC經base64編碼后為QUJD。但在實際過程中,並不是所有的字符串轉化后長度都是6的倍數,這時就需要用0來補充未滿的位數,並使用=來當作占位符,使最終的長度為8的倍數。
在對base64進行解碼時,會將需要解碼的字符串每四個分為一組(在有占位符=的情況下,待解碼的內容長度總是4的倍數)
當末尾是=時,則將等於號去掉,並將最后一個字符的后兩位二進制數去掉,剩下的二進制數長度即為8的倍數,再進行解碼
當末尾是==時,則將兩個等於號去掉,並將最后一個字符的后四位二進制數去掉,剩下的二進制數長度即為8的倍數,再進行解碼。
二、base64編碼
三、base64解碼
參考:
https://blog.csdn.net/weixin_51804748/article/details/121792094