Base64 編碼與解碼詳解

Base64 是基於 64 個可打印字符 A-Z、a-z、0-九、+、/ 來表示二進制數據的表示方法,經常使用於數據在網絡中的傳輸。本篇將分別介紹其編碼、解碼以及實際運用。segmentfault

Base64 編碼

Base64 本質是一種將二進制轉爲文本的方案。基本規則以下:服務器

  • 編碼時候選用 64 (大小寫英文字母,數字,+ /)個字符以及用做補位的=來表示
  • 在編碼的時候,將3個字節變爲4個字節,4個字節的高兩位都用 00 來填充,後 6 位來表示 64 個字符。

以一個實際的例子 "YOU" 爲例,其編碼過程以下:網絡

image
由上表格可知 "YOU"對應的 Base64 編碼爲:"WU9V"。post

對於要待編碼的字符數若是不是 3 的倍數時候,會用 0 去填充,編碼出來後用 = 號表示,如: "ME" 其編碼以下:
image編碼

Base64 解碼

將 4 個字節變爲 3 個字節;spa

  • 將 24 bit 左移 16 位,與 255 進行與操做,得到第一個字符,
  • 將 24 bit 左移 8 位,與 255 進行與操做,得到第二個字符,
  • 將 24 bit 與 255 進行與操做,獲取第三個字符

Base64 實現與運用場景

在 Node 中提供 Buffer 模塊,能夠進行二進制或者字符與 Base64 的想換轉換,其代碼以下:code

const buf2 = Buffer.alloc(2);
buf2.write("M", 0);
buf2.write("E", 1);
buf2.toString("base64"); //TUU=
// base64 解碼
const decodeBase64 = new Buffer("TUU=", "base64").toString(); //ME

Base64 有着普遍的使用,如:blog

  • 對不支持二進制傳輸的場景, 將二進制數據編碼成 Base64 傳輸給服務器
  • Base64 編碼圖片
  • MIME, 電子郵件系統中使用 Base64 編碼後傳輸

參考資料

[1] Base64 的原理、實現及應用圖片

[2] Base64是如何進行的get

相關文章
相關標籤/搜索