編碼與解碼工具
用於在不同格式之間編碼與解碼文字的工具。所有處理都在您的瀏覽器中完成,資料不會上傳。
- CSR 解碼工具貼上憑證簽章要求(CSR)或 X.509 憑證,即可讀出其中的內容:主體、別名、金鑰演算法與長度、有效期間、擴充欄位與指紋。所有解碼都在你的瀏覽器中完成,內容不會被上傳。
- Base64 編碼與解碼工具將文字編碼為 Base64,或把 Base64 解碼回原文。完整支援 Unicode,中文、日文、韓文與表情符號都能正確轉換而不會亂碼。
- URL 編碼與解碼工具將文字進行網址百分比編碼,或解碼回原文。編碼時可選擇處理單一查詢值或整個網址,因為兩者需要不同的跳脫方式。
- 雜湊與 HMAC 產生器輸入或貼上文字,即可同時取得 MD5、SHA-1、SHA-256 與 SHA-512 雜湊值,也可切換至 HMAC 使用密鑰簽章。所有運算都在瀏覽器中完成,文字與密鑰都不會離開您的裝置。
- JWT 解碼工具貼上 JWT 即可檢視其標頭與內容,並看到到期時間。解碼完全在您的瀏覽器中進行,權杖不會離開您的裝置。
- JWT 產生器編輯 JWT 內容、選擇演算法,並以您的密鑰簽章。簽章完全在瀏覽器中完成,密鑰不會離開您的裝置。
選擇合適的編碼工具
要讓位元組安全通過文字管道時使用 Base64;要把某個值安全放進網址時使用 URL 編碼。校驗碼與 HMAC 簽章(以共用密鑰證明訊息由誰產生)則使用雜湊產生工具。
JWT 解碼工具可用來讀取權杖的宣告,若有密鑰也能驗證簽章;JWT 產生工具可為測試簽發權杖;CSR 解碼工具則讓你在送交憑證機構之前,先確認這份憑證要求實際申請了哪些名稱與金鑰。
四種看起來相似、實則不同的工作
編碼是把資料改寫成較安全的字元集,任何人都能完全還原,Base64 與百分比編碼都屬於這一類。雜湊是單向且不使用金鑰的,因此能在不洩漏內容的情況下證明兩個輸入相同。簽章則加入了秘密金鑰,這才讓一則訊息成為「由誰送出」的證據。而檢視只是解碼本來就公開的結構,JWT 與 CSR 解讀工具做的正是這件事。
把第一種和第三種混為一談,是代價最高的誤解。Base64 內容看起來像被打亂了,實際上什麼也沒保護;任何拿到它的人一秒就能讀懂。把一段貼進這裡的解碼工具,就能輕易示範這一點。
一再出現的問題是「層」
編碼不具冪等性。把一個值跳脫兩次,%20 會變成 %2520,引號會變成帶雙重反斜線的引號,而本該存放物件的欄位會存成一串 JSON 字串。只要應用程式碼先編碼了某個框架反正也會編碼的值,就會發生這種情況。
解法是移除兩個步驟中的一個,而不是在接收端解碼兩次,後者只是把錯誤搬到別處。用這些工具一層一層解碼,就能知道實際上有幾層,這通常是找出多加一層的那個元件最快的方法。
想清楚你貼上的是什麼
這裡的一切都在你的瀏覽器中執行,所以你貼上的內容不會被上傳,也不會被記錄。這點值得知道,因為進入這些工具的素材很少是中性的:CSR 帶有內部主機名稱與組織資訊,JWT 帶有使用者識別碼與權限範圍,而雜湊的輸入本身可能就是機密。
但仍有兩個習慣值得保持。能用測試用密鑰驗證簽章時就不要用正式環境的密鑰;以及永遠不要把私密金鑰貼到任何網頁,包括本頁在內——CSR 可以安全地分享,簽署它的金鑰則不行。
