UltKit

JSON 轉 Base64 編碼器

將 JSON 檔案轉成單行 Base64 文字。引號、大括號與換行在環境變數、YAML 欄位和 API 請求內容中容易出錯,編碼後就能完整保留。解碼後會得到一模一樣的位元組。

資料轉換器

或將CSV, TSV, TXT … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    上傳 JSON 檔案

    加入 .json、.jsonl 或 .ndjson 檔案,例如服務帳戶金鑰或設定檔。每批最多 20 個檔案,每個檔案最大 95 MB。

  2. 2

    決定是否加前綴

    預設為純 Base64。只有當文字要放進需要 data: URL 的 HTML 或 CSS 屬性時,才在進階設定中開啟 Data URI 前綴。

  3. 3

    編碼並複製

    按下轉換為 Base64 文字,下載結果,再把字串貼到你的機密儲存區、manifest 或請求本文中。

把 JSON 編碼成 Base64 並不會改變資料,只是把它重新包裝成純字母與數字,讓它能通過會弄壞大括號、引號和換行的地方。

為什麼要把 JSON 檔案編碼成 Base64

最常見的情況是憑證檔。雲端服務商提供的服務帳戶金鑰是 JSON 檔,但你的 CI 系統、主機管理後台或容器平台只提供單行文字欄位來存放機密。直接貼上原始 JSON,會在第一個換行或第一個未跳脫的引號處出錯。編碼成 Base64 後,同一把金鑰就成為一整串不間斷的字串,應用程式啟動時再解碼即可。

Base64 的源頭是電子郵件:1996 年 RFC 2045 定義的 MIME 用它讓附件能通過只支援 7 位元文字的郵件伺服器。2006 年,這套字元集又在 RFC 4648 中獨立標準化。代價是檔案變大,因為每 3 個位元組會變成 4 個字元。圖片與其他二進位檔案可使用圖片轉 Base64,同樣編碼並附上對應的 data URI。如果接收端讀的是 YAML 而不是 Base64 欄位,JSON 轉 YAML可能就夠了。

JSON 轉 Base64 範例

精簡 JSON {"env":"prod","retries":3} 及其 Base64 編碼
{"env":"prod","retries":3}

eyJlbnYiOiJwcm9kIiwicmV0cmllcyI6M30=

哪些地方需要 Base64 編碼的 JSON

只接受 Base64 格式 JSON 的地方
機構規定來源
Kubernetes Secretsdata 底下的每個值都必須是 Base64;要掛載 JSON 金鑰檔,須先編碼。kubernetes.io
GitHub REST API建立或更新檔案內容的端點,要求檔案(包含 .json 檔)以 Base64 放在 content 中。docs.github.com
JSON Web Tokens (RFC 7519)JSON 標頭與宣告各自以 base64url 編碼,再用點號串接。—
電子郵件附件 (MIME).json 附件以 Base64 傳輸編碼寄送,才能通過純文字的郵件伺服器。—
Base64Base 64 編碼 · RFC 4648 編碼
用 64 個安全字元表示任意位元組的方法:A–Z、a–z、0–9、+ 和 /,並以 = 補位。每 3 個輸入位元組會變成 4 個輸出字元,因此文字比檔案長約三分之一。它可逆且不需要金鑰,所以只是傳輸格式,不是安全措施。

JSON 與 Base64 格式說明

JSON

JavaScript 物件表示法

JSON 是用於結構化資料的輕量文字格式,由 Douglas Crockford 在 2000 年代初期推廣,並標準化為 RFC 8259 和 ECMA-404。它以簡單易讀的語法表示物件、陣列、字串、數字、布林值和 null。幾乎所有程式語言都把它當作網頁 API、設定檔和應用程式間資料交換的預設格式。它沒有內建註解、日期或結構描述,大型巢狀檔案不用檢視器很難閱讀。

壓縮方式
–
透明度
–
動畫
–
推出年份
2001 · Douglas Crockford
JSON 轉檔工具

BASE64

Base64 編碼文字

Base64 是 RFC 4648 定義的編碼方式,可將任何二進位資料轉為由 64 個安全文字字元組成的字串。常用於以資料 URI 將圖片嵌入 HTML 與 CSS、在電子郵件中附加檔案,以及在 JSON 或 XML 中傳送二進位資料。編碼可完全還原,但會讓資料增大約 33%。Base64 不是加密,沒有任何安全性,任何人都能解碼。

壓縮方式
無損
透明度
–
動畫
–
推出年份
–
BASE64 轉檔工具

當結構化資料必須放進無法接受原始引號與換行的單一字串欄位時,就會把 JSON 編碼成 Base64,例如 CI 機密、Kubernetes manifest、API 的 content 欄位或標頭值。

JSON 轉 Base64 常見問題

Base64 編碼的 JSON 有加密嗎?

不是。Base64 只是一種編碼,任何人用一行指令就能解碼。Kubernetes 文件本身也提醒,Secret 預設只是以 Base64 編碼並未加密儲存,所以編碼後的字串要和原始金鑰一樣妥善保護。

權杖或網址該用 Base64 還是 base64url?

這裡輸出的是標準 Base64,使用 + 和 /,並以 = 補位。JWT 和網址參數使用 RFC 4648 的 base64url 字元集,改用 - 和 _,通常也會省略補位字元。如果目標系統要求 base64url,請替換這三個字元。

編碼前要先壓縮(minify)JSON 嗎?

通常會。空格、縮排和換行都和其他內容一樣是位元組,每 3 個位元組會變成 4 個輸出字元。先把排版過的設定檔壓成單行(例如用 jq -c),編碼後的字串就會相應變短。

如何把字串解碼回 JSON?

在 macOS 或 Linux 執行 base64 --decode;在 PowerShell 使用 [Convert]::FromBase64String;在瀏覽器中,則把 atob 的結果交給 TextDecoder,UTF-8 字元才能正確還原。

為什麼 kubectl 顯示 illegal base64 data?

Secret manifest 中 data 底下的值必須是單行的有效 Base64。出現這個錯誤,通常是貼上時混入了換行,或是把純 JSON 直接放在 data 底下。純文字值應該放在 stringData,Kubernetes 會幫你編碼。

編碼會改動 JSON 的內容嗎?

不會。Base64 能在位元組與文字之間無損對應,因此鍵、值、帶重音符號的字元,甚至檔案開頭的位元組順序標記,解碼後都會完整還原。