Base64 解碼及編碼工具

貼上文字或 Base64 字串,揀好分頁,即刻可以複製結果。

使用方法

喺 API 回應、設定檔或者電郵標頭見到一大串英文字母同數字,想 Base64 解碼睇吓入面寫咗乜,用呢個頁面就得,毋須安裝任何軟件。頁面上方有「編碼」和「解碼」兩個分頁,揀好之後把內容貼入輸入框,結果會即時在下方顯示。

編碼時可以輸入任何文字,繁體中文、粵語字如「嘅」「咗」、英文以至 Emoji 都處理得到。工具內部以 UTF-8 運作,中文字不會變成亂碼。解碼時把手上的字串原封不動貼上便可,中間的空格和換行會自動略過,URL-safe 格式的「-」與「_」亦能辨認。輸入格式有誤的話,會見到清楚的錯誤提示,而不是一堆睇唔明的結果。完成後撳複製按鈕,結果就會放入剪貼簿。

所有處理都在你自己的瀏覽器內進行。即使檢查登入憑證或公司內部資料,亦不會傳送到外面的伺服器。

Base64 點樣運作

Base64 是一種只用文字字元去表示二進制資料的方法。它把輸入每 3 個位元組(24 位元)分為一組,再拆成 4 段、每段 6 位元。每段 6 位元等於 0 至 63 之間的一個數字,然後對應到由大楷字母、細楷字母、數字、「+」和「/」組成的 64 個字元。最後若剩下 1 至 2 個位元組,便以「=」補足長度。

輸入 位元組 Base64
abc 3 YWJj
港 3(UTF-8) 5riv

由於 3 個位元組會變成 4 個字元,編碼後的資料大約比原本大 33%。中文字在 UTF-8 一般佔 3 個位元組,因此一個中文字剛好變成 4 個 Base64 字元。另一個版本 base64url 把「+」換成「-」、「/」換成「_」,而且通常省略「=」,方便直接放入網址或檔案名稱。

要記住:Base64 不是加密。它沒有鎖匙,亦不會隱藏內容,只是把同一份資料用另一套字元寫出來。

實際用途及貼士

做網頁開發經常會遇到 Base64。Data URI 在 data:image/png;base64, 後面接上細小圖片,直接嵌入 HTML 或 CSS。電郵透過 MIME 標準,把附件轉成文字再寄出。JSON 不能直接載入二進制資料,所以不少 API 傳送檔案時,會把檔案轉成 Base64 字串放進 JSON payload。

HTTP Basic 認證標頭會把「用戶名稱:密碼」寫成 Base64,由於好容易還原,一定要配合 HTTPS 使用。JWT 則由三段以句號分隔的 base64url 組成,解碼頭兩段就可以讀到標頭和聲明(claims)內容。

辨認小貼士:如果一串文字只有英文字母、數字和幾個符號,而且以「=」或「==」結尾,好大機會就是 Base64。如果解碼後出現無法閱讀的字元,原本的資料多數是圖片之類的二進制檔案。

常見問題

Base64 可唔可以用嚟保護密碼?

不可以。Base64 只係編碼,並非加密,任何人無需鎖匙都可以即時還原。如要保護機密資料,請用 AES 等真正的加密方法。

點解解碼時會顯示錯誤?

通常是字串混入了 Base64 不會用到的字元、內容被截斷,或者解碼後的位元組並非有效的 UTF-8。

JWT 那類 URL-safe Base64 都可以解碼嗎?

可以。解碼分頁接受 base64url 所用的「-」和「_」,亦會自動忽略空格及換行。

輸入的內容會上載到伺服器嗎?

不會。全部轉換都在你的瀏覽器內完成,資料不會離開你的裝置。

點解編碼後長度會變長?

Base64 把每 3 個位元組變成 4 個字元,所以結果比原本大約多出三分之一。