那一長串亂碼,其實有意義

你可能在開發網頁、處理 API 或設定電子郵件時,見過這樣的字串:

SGVsbG8sIFdvcmxkIQ==

這不是亂碼,而是「Hello, World!」經過 Base64 編碼後的結果。Base64 是一種將任意二進位資料轉換為可讀 ASCII 文字的編碼方式,廣泛應用於網路傳輸、資料儲存與系統整合。


Base64 為什麼存在?

電腦底層處理的是 0 和 1 組成的二進位資料,但許多通訊協定(如早期的電子郵件 SMTP、HTTP 表單)只設計用來傳輸純文字,無法妥善處理二進位資料(圖片、音訊、壓縮檔等)。

Base64 的出現就是為了解決這個問題:把二進位資料轉換成只包含安全 ASCII 字元的文字,讓任何文字協定都能傳輸。


Base64 是怎麼運作的?

Base64 使用 64 個字元作為編碼字母表:

  • 大寫英文字母:A–Z(26 個)
  • 小寫英文字母:a–z(26 個)
  • 數字:0–9(10 個)
  • 符號:+/(2 個)
  • 補位符號:=(用於結尾補齊)

編碼步驟

  1. 將原始資料轉為二進位(每個字元 8 bits)
  2. 3 個 bytes(24 bits) 分為一組
  3. 將 24 bits 分成 4 組各 6 bits
  4. 每組 6 bits 對應 Base64 字母表中的一個字元
  5. 若原始資料長度不是 3 的倍數,末尾補上 =

範例:編碼「Man」

字元ASCII二進位
M7701001101
a9701100001
n11001101110

合併為 24 bits:010011 010110 000101 101110

對應 Base64:TWFu → 結果為 TWFu


Base64 常見使用場景

1. 電子郵件附件(MIME)

早期電子郵件協定只支援 7-bit ASCII,無法傳送圖片或附件。MIME 標準引入 Base64,讓郵件可以安全攜帶任意檔案。如今的附件傳輸,底層仍大量使用 Base64。

2. 網頁內嵌圖片(Data URI)

在 HTML 或 CSS 中,可以直接把圖片轉為 Base64 字串嵌入,避免額外的 HTTP 請求:

<img src="data:image/png;base64,iVBORw0KGgo..." />

適用於小型圖示,但大型圖片會讓 HTML 檔案膨脹,反而降低效能。

3. API 傳遞二進位資料

REST API 通常以 JSON 格式傳輸資料,JSON 不支援直接嵌入二進位。透過 Base64,可以將圖片、PDF 等檔案轉為字串,嵌入 JSON 欄位中傳送。

4. 基本身份驗證(Basic Auth)

HTTP Basic Authentication 將帳號密碼以 username:password 格式組合後進行 Base64 編碼,加入請求標頭:

Authorization: Basic dXNlcjpwYXNzd29yZA==

注意: Base64 不是加密,只是編碼,任何人都可以解碼。Basic Auth 必須搭配 HTTPS 使用,才能保護帳密安全。

5. JWT(JSON Web Token)

JWT 廣泛用於現代 Web 身份驗證,其三個組成部分(Header、Payload、Signature)都以 Base64Url 編碼(是 Base64 的變體,用 - 取代 +,用 _ 取代 /)。


Base64 的優缺點

項目說明
✅ 相容性高輸出只含安全 ASCII 字元,幾乎任何系統都能傳輸
✅ 標準統一各語言都有內建或成熟的 Base64 函式庫
❌ 體積增大編碼後資料量約增加 33%
❌ 非加密任何人都能輕易解碼,不提供任何安全保護
❌ 計算開銷大量資料頻繁編解碼會消耗 CPU 資源

常見誤解:Base64 不等於加密

這是最重要的觀念。Base64 是編碼(Encoding),不是加密(Encryption)。 它的目的是讓資料可以透過文字協定傳輸,而不是保護資料安全。

任何人只要把 Base64 字串丟入解碼器,就能還原原始內容。如果你需要保護資料,應使用 AES、RSA 等真正的加密算法;若需要驗證完整性,使用 SHA-256 等雜湊函式。


結語

Base64 是現代網路基礎設施中不起眼卻無所不在的技術。從電子郵件附件、網頁圖片嵌入,到 API 串接、身份驗證,它默默支撐著資料在不同系統間的流動。

理解 Base64,能幫助你在開發時做出更正確的技術判斷:什麼時候用、什麼時候不該用、它能解決什麼問題、又不能解決什麼問題。

👉 需要快速編碼或解碼 Base64 字串?使用本站的 Base64 編解碼工具,支援文字與檔案,即時轉換不需安裝任何軟體!