如何解碼 Base64 字串(以及 JWT Payload)
Base64 是可逆編碼,並非加密。一步完成解碼,正確處理 Unicode,並讀取使用 Base64url 的 JWT 段落。
Base64 到底是什麼
Base64 把二進位資料對應到 64 個可列印的 ASCII 字元。它完全可逆且不需要金鑰,因此是編碼而非加密 —— 千萬不要拿它來「藏」機密資料。
編碼與解碼
在瀏覽器裡用 btoa 編碼、atob 解碼。對非 ASCII 文字,要走一次 UTF-8 來回,這樣 é、ü、你這些字才不會變成亂碼位元組。
讀取 JWT
JWT 是用點號連起來的三段 Base64url 字串:header、payload、signature。前兩段解碼後就能讀出 claim;signature 是二進位內容,不是給人讀的。
Base64 與 Base64url 的差別
標準 Base64 用 + 與 /,並用 = 填補長度;URL 安全的 Base64url 把它們換成 - 與 _,並省略填補,這樣這個值就可以安全地放進 URL 與 JWT。
解碼並不等於驗證
解碼 JWT 只是讀出 claim,不能證明它是真的。任何人都能偽造一個 payload 寫著 "role":"admin" 的 token;只有用簽發方的金鑰驗過簽章,才能證明 token 為真。永遠不要根據未經驗證的 token 做出信任判斷。
常見的 JWT claim 與意義
iss 是簽發者,sub 是主體(使用者 id),aud 是預期受眾,exp 是逾期時間(Unix 秒),iat 是簽發時間,nbf 是「不早於」時間,jti 是唯一 id。自訂 claim 會與這些並列。永遠在伺服器端而不是只在用戶端檢查 exp 與 aud。
填補與 URL 安全變體
Base64url 常常沒有 = 填補。要在程式中解碼,先用 = 把長度補成 4 的倍數,再把 - 換回 +、_ 換回 /,然後用一般的 Base64 解碼器處理。瀏覽器的 atob 不能直接吃 Base64url —— 必須先轉換過。
JSON 修復指南
主題中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具體指南
- URL 編碼:對查詢參數與路徑做百分號編碼
- 將 YAML 轉為 JSON(並避免縮排錯誤)
- 將 JSON 轉為 CSV:把物件陣列扁平化
- 將 JSON 轉為 XML:根元素、屬性與陣列
- 將 JSON 跳脫為字串字面值(並解碼被雙重編碼的 JSON)
- 修復 JSON 中的尾隨逗號
- 修復 JSON 中的單引號
- 修復 JSON 中未加引號的鍵
- 修復 LLM 輸出的 JSON
- 修復 JSON 解析錯誤:Expected Property Name
- JSON 與 JavaScript 物件字面值的差異
- 在發送 API 請求前驗證 JSON
- JSON 格式化器 vs JSON 修復工具
- 修復 JSON Unexpected Token 錯誤
- JSON 轉 JavaScript 物件轉換工具