什麼是 Base64 編碼?完整說明
快速解答
Base64 編碼使用 64 個可列印字元(A-Z、a-z、0-9、+、/)將二進位資料轉換為文字。每 3 個位元組的輸入變成 4 個 Base64 字元。 Base64 是可逆的(不是加密),資料大小會增加約 33%。使用我們免費的 Base64 編碼器和解碼器在瀏覽器中進行轉換。
介紹
Base64 是一種二進位到文字的編碼方案,可將二進位資料轉換為使用 64 個可列印字元的 ASCII 字串表示形式。它由 RFC 4648 定義,通常用於對需要透過設計用於處理文字的媒體傳輸的資料進行編碼 - 電子郵件附件 (MIME)、HTML/CSS 中的資料 URLs、JWT 令牌部分和包含二進位資料的 KE__EP_2__ 有效負載。 Base64 是編碼,而不是加密-它是完全可逆的且不需要金鑰。任何人都可以解碼 Base64,因此它不提供機密性。
步步
-
了解字符集
Base64 使用 64 個字元:A-Z (26)、a-z (26)、0-9 (10)、+ 和 / (2)。當輸入長度不是 3 的倍數時,= 字元用於填充。 URL 安全變體將 + 替換為 - 並將 / 替換為 _ 並省略填充。
-
了解編碼的工作原理
Base64 處理 3 位元組(24 位元)區塊中的輸入。每個 24 位元區塊分為四個 6 位元組。每個 6 位元值 (0-63) 對應到 64 個字元之一。如果輸入不是 3 的倍數,則新增填充 (=):1 個位元組輸入 → 2 個 Base64 字元 + ==,2 個位元組 → 3 個字元 + =。
-
了解開銷大小
Base64 將資料大小增加了大約 33% — 每 3 個位元組變成 4 個字元。當 Base64 編碼時,1 MB 檔案變成約 1.33 MB。此開銷是純文字相容性的權衡。
-
區分編碼和加密
Base64 是編碼,不是加密。它是可逆的,無需鑰匙——任何人都可以解碼。 Base64 不提供保密性;它僅將二進位轉換為文字以進行傳輸。切勿使用 Base64 來儲存密碼或機密。
範例
對文字進行編碼
輸入: Hello, World!
輸出: SGVsbG8sIFdvcmxkIQ==
編碼二進位資料(顯示為十六進位)
輸入: 位元組:0x00 0x01 0x02
輸出: AAEC
URL-安全性 Base64 (JWT 風格)
輸入: Standard: SGVsbG8= → URL-safe: SGVsbG8 (no padding, - and _ for + and /)
輸出: 用於 JWT 令牌和 URL 參數
常見問題
- 將 Base64 視為加密 —Base64 是可逆的,無需金鑰。任何人都可以解碼它。切勿使用它來保護敏感資料。
- 非 ASCII 字元 — 天真的 btoa() 在 Unicode 上拋出例外。使用 TextEncoder + btoa(unescape(encodeURIComponent(text))) 或支援 UTF-8 的工具。
- 刪除填充 — = 填充是編碼的一部分。刪除它會破壞解碼(儘管某些解碼器可以重建它)。
- 大小開銷 —Base64 使資料大小增加約 33%。對於大文件來說,這一點很重要;考慮是否需要編碼。
提示
- 對資料 URLs 使用 Base64 將小圖像嵌入到 HTML/CSS 中,無需單獨的 HTTP 請求。
- 對 URLs 和 JWT 標記使用 URL 安全性 Base64 (將 + 替換為 -,將 / 替換為 _,剝離填充)。
- Base64 不是加密-使用它是為了傳輸相容性,而不是為了保密。
- 使用我們的 Base64 編碼器和解碼器在您的瀏覽器中進行即時、私密的轉換。