RUNWEBTOOLS
繁體中文
資料格式與編碼

Base64 編碼詳解:它是什麼,何時用

更新 2026-07-06

Base64 在資料 URI、郵件附件、API 權杖和設定檔中不斷出現,卻很少被講清楚。它常被誤認為加密,從而導致真正的安全錯誤。本指南講清 Base64 究竟做什麼、為什麼讓資料變大、在哪裡真正有用,以及值得拋棄的誤區。

Base64 是什麼

Base64 是一種編碼,不是加密也不是壓縮。它的工作是僅用 64 個「安全的」文字字元來表示任意二進位資料 —— 一張圖片、一個檔案、任意位元組序列:A–Za–z0–9,加上 +/(用 = 作填充)。這些字元都能安然通過為處理純文字而設計的系統,這正是 Base64 存在的全部原因。

為什麼需要它

許多雖老卻仍關鍵的系統 —— 郵件是典型例子 —— 被設計用來傳輸 文字,而非原始二進位。直接把二進位發過去可能損壞資料:某些位元組值會被當作控制字元、被剝離或被弄亂。Base64 透過把二進位翻譯成一種能原樣通過的文字形式,再在另一端翻譯回來,繞開了這個問題。

從概念上看,這個往返是這樣的:

二進位資料  →  Base64 文字  →  二進位資料
(原始)          (可安全傳送)     (完全相同的副本)

為什麼 Base64 讓資料大約變大 33%

沒有免費的午餐。Base64 把輸入的三個位元組(24 位元)拆成四個 6 位元組,每組映射到 64 個字元之一。三位元組進、四字元出 —— 所以編碼輸出比原始大約大三分之一。這份開銷是讓二進位能安全以文字傳輸的代價,也是你不該無緣無故對大檔案做 Base64 編碼的原因。

你實際會在哪裡看到它

資料 URI

你可以把一張小圖片作為 Base64 資料 URI 直接嵌入 HTML 或 CSS,省去一次單獨的網路請求:

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

這對很小的圖示很方便,但因為 33% 的體積代價,對任何較大的東西都不是好選擇。

郵件附件

在底層,郵件附件被 Base64 編碼,好讓二進位檔案完好地穿過基於文字的郵件系統。

權杖與設定

權杖和憑證常被 Base64 編碼,以便安全地放進標頭、URL 或文字設定檔裡。例如,JWT(JSON Web Token) 就是用點連接的三段 Base64 —— 這正是 JWT 解碼器能立刻讀出其內容的原因。

安全誤區

最重要的一點:Base64 不是加密,不提供任何安全性。 沒有金鑰、沒有秘密 —— 任何人都能在一瞬間把 Base64 解回原始資料。如果你看到某個密碼或 API 金鑰僅靠 Base64 來「保護」,就把它當作明文,因為實際上就是。

Base64 回答的是「我如何讓這份資料安全地通過文字通道?」,而不是「我如何讓這份資料保密?」。要保密你需要真正的加密。把兩者結合很常見:先加密,再對加密結果做 Base64 編碼,以便作為文字傳輸。

Base64 與 URL

標準 Base64 使用 +/,它們在 URL 中有特殊含義,作為查詢參數傳遞時可能被破壞。一個叫 Base64URL 的變體把它們換成 -_ 並去掉填充,讓輸出可以直接放進 URL。如果你還在與 URL 裡的空格或和號之類的字元較勁,那是 URL 編碼 的活兒 —— 針對不同問題的不同工具。

自己動手編碼和解碼

你很少需要手工做 Base64,但常常需要查看或產生它 —— 讀一個資料 URI、看看權杖裡有什麼、建立一張嵌入圖片。我們的 Base64 編碼器和解碼器 能雙向即時轉換文字,全程在你的瀏覽器中完成,因此即便是敏感值也絕不離開你的裝置。貼上 Base64 看原文,或貼上文字得到編碼形式。

一句話總結

Base64 把二進位變成安全文字再變回來,代價是體積大約多 33%,且毫無保密性。用它來 傳輸 資料,絕不要用它來 保護 資料。

更多 資料格式與編碼

查看全部 資料格式與編碼 指南 →

本指南提到的工具