Base64 編解碼原理詳解:從概念到實戰應用

加密編碼(更新於 2026年4月28日)

Base64 是什麼?

Base64 是一種將二進位資料編碼為 ASCII 文字的方法。它用 64 個可列印字元(A-Z、a-z、0-9、+、/)來表示任意二進位資料。

為什麼需要 Base64?

許多系統只能處理文字資料,無法直接傳輸二進位:

  • 電子郵件:SMTP 協定最初只支援 ASCII 文字
  • URL:二進位資料無法直接放入 URL
  • JSON:無法直接嵌入二進位(如圖片資料)
  • HTML/CSS:內嵌圖片需要文字格式

Base64 將二進位轉為文字,解決了這些傳輸限制。


Base64 編碼原理

核心步驟

  1. 將輸入資料按 3 位元組(24 位)分組
  2. 將每組 24 位拆為 4 個 6 位數字
  3. 每個 6 位數字(0-63)對應一個 Base64 字元
  4. 不足 3 位元組的組用 = 填充

編碼表

字元 字元 字元 字元
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
... ... ... ... ... ... ... ...
25 Z 41 p 57 5 63 /

編碼範例

輸入: "Hello" (ASCII: 72 101 108 108 111)

二進位: 01001000 01100101 01101100 01101100 01101111

6 位分組: 010010 000110 010101 101100 011011 000110 1111(00)
          ↓      ↓      ↓      ↓      ↓      ↓      ↓
索引:    18     6      21     44     27     6      60
字元:    S      G      V      s      b      G      8=

結果: "SGVsbG8="

實際應用場景

1. 內嵌圖片(Data URL)

將小圖片編碼為 Base64 直接嵌入 HTML/CSS,減少 HTTP 請求:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." />
.icon {
  background-image: url(data:image/svg+xml;base64,PHN2Zy...);
}

注意:只適合小圖示(< 2KB),大圖片內嵌會增加 HTML 體積。

2. URL 安全編碼

標準 Base64 中的 +/ 在 URL 中有特殊意義。URL 安全 Base64 將它們替換:

  • +-
  • /_
  • 去掉 = 填充
標準: a+b/c==
URL 安全: a-b_c

使用 Base64 編解碼工具 可以選擇 URL 安全模式。

3. JWT Token

JWT(JSON Web Token)的三個部分都用 Base64URL 編碼:

Header.Payload.Signature
↑      ↑       ↑
Base64 Base64  HMAC

4. 郵件附件

MIME 郵件中的附件用 Base64 編碼傳輸:

Content-Transfer-Encoding: base64

SGVsbG8gV29ybGQ=

5. 設定檔中的金鑰

許多設定系統用 Base64 儲存二進位金鑰:

apiVersion: v1
kind: Secret
data:
  password: cGFzc3dvcmQ=   # Base64 編碼

Base64 的注意事項

體積增大

Base64 編碼後體積增加約 33%

原始: 3 位元組 → 編碼: 4 位元組 (4/3 ≈ 1.33)
原始大小 Base64 大小 增加比例
1 KB 1.33 KB +33%
100 KB 133 KB +33%
1 MB 1.33 MB +33%

安全性誤區

Base64 不是加密! 它只是編碼,任何人都能解碼。不要用 Base64 保護敏感資料。

Base64("password") = "cGFzc3dvcmQ="
Base64Decode("cGFzc3dvcmQ=") = "password"  ← 一秒還原

需要加密請使用 AES 加密工具國密 SM4 加密工具


Base64 變體

Base32

使用 32 個字元(A-Z、2-7),全大寫,適合不區分大小寫的系統(如檔名)。

Base58

比特幣社群設計,去掉了 Base64 中容易混淆的字元(0/O、1/I/l、+/),適合人工抄寫場景。

Base85 / Ascii85

編碼效率更高(4 位元組 → 5 字元,增加 25%),但不如 Base64 通用。


使用工具庫進行 Base64 編解碼

文字編解碼

  1. 開啟 Base64 編解碼工具
  2. 輸入文字或 Base64 字串
  3. 選擇編碼或解碼
  4. 可選 URL 安全模式

圖片轉 Base64

使用 圖片轉 Base64 工具 將圖片轉為 Data URL。

批次處理

支援批次輸入多行文字,一次性編碼或解碼。


常見問題

解碼後出現亂碼?

可能是原始資料不是 UTF-8 文字。Base64 可以編碼任何二進位資料,但如果原始資料是圖片等非文字格式,解碼為文字會顯示亂碼。

URL 中使用 Base64 報錯?

確保使用 URL 安全變體(替換 +/-/_,去掉 =)。標準 Base64 中的 +/ 會破壞 URL 結構。

Base64 和 Hex 編碼怎麼選?

  • Base64:體積更小(增 33%),適合傳輸
  • Hex:體積更大(增 100%),但可讀性好,適合除錯和顯示

使用 Hex 編解碼工具 進行 Hex 編解碼。


總結

Base64 是最常用的編碼方式之一,理解其原理和應用場景對開發者至關重要。工具庫提供完整的編解碼工具鏈:Base64Base32Base58HexURL 編解碼,以及真正的加密工具 AES國密 SM4 等,全部瀏覽器本機處理,安全可靠。

#Base64#编码#解码#教程#开发者