一、什麼是base64編碼和解碼
在計算機領域中,常常需要在網路中傳輸二進位數據,但是某些傳輸途中(例如:電子郵件、HTTP文本協議(HTTP)等)只支持 ASCII 字符集,這就需要將二進位數據編碼成 ASCII 字符集所支持的字元。
base64編碼採用64個可列印字元來表示二進位數據,生成出來的碼可以用於在URL或者網頁上直接傳輸而不會造成數據的損失。
在base64編碼演算法中,將3個位元組的二進位數據編碼為4個字元,使傳輸數據量縮小約三分之一。這種編碼方式常用於郵件傳輸,以便將8位位元組的數據用只有6位有效位的ASCII字元代替,通常用於處理位元組序列,即通常所說的二進位數據。
二、base64編碼過程
base64編碼的過程可以簡單的概括為以下幾步:
1. 將需要傳輸的數據按3個一組進行劃分 2. 將劃分出來的3個字元轉換為ASCII字元 3. 將ASCII字元轉換為對應的6位二進位數 4. 將轉換後的6位二進位數拼成一個二進位字元串 5. 將拼接好的二進位字元串每6位一個位元組,不足的在後面補上0,生成的一個一個位元組的數據就是傳輸的數據 6. 如果最後一組不足3個字元,用=表示缺少的字元
三、base64解碼過程
base64解碼的過程可以簡單的概括為以下幾步:
1. 將base64編碼的字元串每4個一組進行劃分 2. 將劃分出來的4個字元轉換為對應的6位二進位數 3. 將轉換後的6位二進位數拼成一個二進位字元串 4. 將拼接好的二進位字元串每8位一個位元組,生成的一個一個位元組的數據就是解碼後的數據 5. 如果解碼後的數據中間存在0,說明解碼失敗
四、base64常見應用場景
base64常見應用場景包括:
1. 在URL、Cookie、網頁的傳參過程中,二進位轉換成可列印字元,防止數據被截斷或丟失。
2. 在郵件傳輸的過程中,由於email只支持ASCII編碼,採用base64轉換成ASCII碼,從而進行傳輸。
3. 在圖片、音頻和視頻文件的傳輸中,為了讓它們能夠在網路上自由傳播,base64編碼成字元串的形式。同時也可以將圖片直接編譯成base64的文本放入html當中,減少http請求,加快速度。
五、base64實現代碼示例
以下是Node.js中base64編解碼的示例代碼:
// Node.js中base64編碼 const encodedString = Buffer.from('Hello World').toString('base64'); console.log(encodedString); // "SGVsbG8gV29ybGQ=" // Node.js中base64解碼 const decodedData = Buffer.from('SGVsbG8gV29ybGQ=', 'base64').toString('ascii'); console.log(decodedData); // "Hello World"
原創文章,作者:TWKL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145433.html