免費線上Base64編碼器和解碼器
Base64 編碼將二進位資料表示為 ASCII 文字 - 常見於 APIs、資料 URI 和電子郵件附件。 Dokall 將純文字編碼為 Base64 並立即將 Base64 解碼回可讀文字。
在偵錯 API 有效負載、使用資料 URI 或編碼小字串以進行傳輸時使用它。處理是本地且即時的。
什麼是 Base64 編碼?
Base64 是一種二進制到文本的編碼方案,用 64 個可列印 ASCII 字符表示二進制數據:A–Z、a–z、0–9、+ 和 /。= 字符用於填充。其設計目的是通過僅處理文本的系統(如電子郵件 MIME 和早期 HTTP)安全傳輸二進制數據。
Base64 不是加密。它不保護數據——任何人都可以解碼。其用途是編碼,而非安全。可將其理解為將任意字節表示為安全文本字符的方式。
Base64 編碼如何工作
Base64 將每 3 個字節(24 位)的輸入拆分為四個 6 位組。每個 6 位組映射到 Base64 字母表中的一個字符。由於 3 字節變成 4 個字符,Base64 輸出始終比輸入大約大 33%。
當輸入長度不是 3 字節的整數倍時,會添加填充。1 字節輸入變成帶 == 填充的 4 個字符;2 字節變成帶 = 填充的 4 個字符;3 字節無需填充。部分實現會省略填充,因為解碼器可根據輸出長度推斷。
何時使用 Base64
在 HTML 或 CSS 中以 data URI 嵌入小圖片:<img src="data:image/png;base64,..."> 可避免額外的 HTTP 請求。這對小圖標(小於 2–3 KB)效果很好,但對較大圖片適得其反,因為 Base64 會使檔案增大 33% 且無法獨立快取。
在 JSON 中發送二進制數據:JSON 沒有二進制類型,因此檔案、圖片和加密密鑰常被 Base64 編碼為字符串,接收端再將字符串解碼回字節。
電子郵件附件通過 MIME 使用 Base64,將二進制檔案編碼為可經過僅處理文本的郵件服務器的 ASCII 文本。
在基於文本的數據庫或配置檔案中存儲小型二進制值。例如,加密密鑰和證書數據常以 Base64 字符串存儲。
Base64 與 Base64url
標準 Base64 使用 + 和 / 作為第 63、64 個字符,並用 = 填充。這些字符在 URL 和檔案名中有特殊含義——+ 在查詢字符串中表示空格,/ 是路徑分隔符,= 是鍵值分隔符。
Base64url 將 + 替換為 -、/ 替換為 _,通常省略填充。它生成可在 URL、檔案名和 HTTP 頭中安全使用而無需額外編碼的令牌。JWT 因此使用 Base64url 編碼——JWT 的每一部分都經 Base64url 編碼,以便令牌可在 URL 查詢參數和 Authorization 頭中傳遞而無需轉義。
不同編程語言中的 Base64
在 JavaScript 中:btoa() 將字符串編碼為 Base64,atob() 解碼。對於二進制數據(Uint8Array),在 Node.js 中使用 Buffer 類,或採用 TextEncoder 與 base64 編碼工具的更現代方式。
在 Python 中:base64 模塊提供 b64encode() 和 b64decode() 用於標準 Base64,以及 urlsafe_b64encode()/urlsafe_b64decode() 用於 Base64url。這些函數處理的是 bytes 對象,而非字符串。
在 Go 中:encoding/base64 包提供 StdEncoding 用於標準 Base64,URLEncoding 用於 Base64url,並有填充與未填充(RawStdEncoding、RawURLEncoding)變體。
在終端中:echo -n "hello" | base64 編碼,echo "aGVsbG8=" | base64 -d(或 --decode)解碼。echo 的 -n 標誌很重要——沒有它,末尾換行也會被編碼。