Base64 編碼詳解:何時使用及如何運作
你一定在很多地方見過 Base64 字串 — 電子郵件附件、data URI、API 令牌,甚至 JWT 酬載中。那些由字母、數字以及偶爾出現的 + 或 / 組成的長字串看起來像是加密資料,但 Base64 根本不是加密。它是一種編碼方案,理解這個區別非常重要。
什麼是 Base64 編碼?
Base64 使用 64 個可列印的 ASCII 字元將二進位資料轉換為文字表示:A-Z、a-z、0-9、+ 和 /(以 = 作為填充字元)。這使得透過純文字系統傳輸二進位資料成為可能。
結果總是比原始資料大 33% — 這是換取文字安全性的代價。
使用我們的 Base64 編碼器親自嘗試 — 貼上任何文字即可看到即時轉換。所有編碼過程都在你的瀏覽器中進行,因此你的資料保持隱私。
Base64 如何運作
編碼過程將輸入分割為 6 位元組(因為 2^6 = 64),並將每個組映射到 64 個字元之一。當輸入長度不能被 3 整除時,會出現 = 填充字元。
何時使用 Base64
在 HTML/CSS 中嵌入圖片
Data URI 可以消除小型圖片的 HTTP 請求。非常適合 10KB 以下的圖示。若需處理較大的圖片,請先使用我們的圖片最佳化工具進行最佳化。
API 資料傳輸
當 API 需要在 JSON 酬載中傳送二進位資料時,Base64 是標準編碼方式。
JWT 令牌
JSON Web Token 使用 Base64URL 編碼。使用我們的 JWT 編碼器/解碼器解碼任何 JWT。
Basic 身份驗證
HTTP Basic Auth 將憑證編碼為 Base64。重要提醒:這是編碼,不是加密。務必使用 HTTPS。
常見的 Base64 錯誤
- 將其視為加密 — Base64 提供零安全性。使用我們的雜湊產生器來進行實際的雜湊運算
- 編碼大型檔案 — 33% 的體積增長在大規模應用時影響顯著
- 重複編碼 — 在編碼之前先確認資料是否已經被編碼過
- 忽略填充字元 — 某些系統會去除
=填充字元
不同語言中的 Base64
JavaScript: btoa('Hello') / atob('SGVsbG8=')
Python: base64.b64encode(b'Hello') / base64.b64decode('SGVsbG8=')
命令列: echo -n 'Hello' | base64
常見問題
Base64 編碼和加密一樣嗎?
不一樣。Base64 任何人都可以自由還原。若需要安全性,請使用正規的加密方式。
為什麼 Base64 會讓資料變大?
三個位元組變成四個字元(每個 6 位元而非 8 位元),導致 33% 的體積增長。
相關資源
- URL 編碼指南 — Web 開發者必備的另一種編碼方式
- JWT 令牌詳解 — Base64 在 JWT 中的實際應用
- Base64 編碼器/解碼器 — 即時編碼與解碼
- 雜湊產生器 — 當你需要真正的安全性時