編碼與解碼工具

用於在不同格式之間編碼與解碼文字的工具。所有處理都在您的瀏覽器中完成,資料不會上傳。

選擇合適的編碼工具

要讓位元組安全通過文字管道時使用 Base64;要把某個值安全放進網址時使用 URL 編碼。校驗碼與 HMAC 簽章(以共用密鑰證明訊息由誰產生)則使用雜湊產生工具。

JWT 解碼工具可用來讀取權杖的宣告,若有密鑰也能驗證簽章;JWT 產生工具可為測試簽發權杖;CSR 解碼工具則讓你在送交憑證機構之前,先確認這份憑證要求實際申請了哪些名稱與金鑰。

四種看起來相似、實則不同的工作

編碼是把資料改寫成較安全的字元集,任何人都能完全還原,Base64 與百分比編碼都屬於這一類。雜湊是單向且不使用金鑰的,因此能在不洩漏內容的情況下證明兩個輸入相同。簽章則加入了秘密金鑰,這才讓一則訊息成為「由誰送出」的證據。而檢視只是解碼本來就公開的結構,JWT 與 CSR 解讀工具做的正是這件事。

把第一種和第三種混為一談,是代價最高的誤解。Base64 內容看起來像被打亂了,實際上什麼也沒保護;任何拿到它的人一秒就能讀懂。把一段貼進這裡的解碼工具,就能輕易示範這一點。

一再出現的問題是「層」

編碼不具冪等性。把一個值跳脫兩次,%20 會變成 %2520,引號會變成帶雙重反斜線的引號,而本該存放物件的欄位會存成一串 JSON 字串。只要應用程式碼先編碼了某個框架反正也會編碼的值,就會發生這種情況。

解法是移除兩個步驟中的一個,而不是在接收端解碼兩次,後者只是把錯誤搬到別處。用這些工具一層一層解碼,就能知道實際上有幾層,這通常是找出多加一層的那個元件最快的方法。

想清楚你貼上的是什麼

這裡的一切都在你的瀏覽器中執行,所以你貼上的內容不會被上傳,也不會被記錄。這點值得知道,因為進入這些工具的素材很少是中性的:CSR 帶有內部主機名稱與組織資訊,JWT 帶有使用者識別碼與權限範圍,而雜湊的輸入本身可能就是機密。

但仍有兩個習慣值得保持。能用測試用密鑰驗證簽章時就不要用正式環境的密鑰;以及永遠不要把私密金鑰貼到任何網頁,包括本頁在內——CSR 可以安全地分享,簽署它的金鑰則不行。