使用方法
- 選擇「編碼」把文字轉換為 z-base-32,或選擇「解碼」把 z-base-32 還原為文字。
- 保持選擇 z-base-32 變體,並確認「填充」已關閉,因為這種格式不使用填充。
- 輸入或貼上內容,也可以開啟檔案,結果會隨輸入即時更新。
- 複製結果,或將結果下載為檔案。
什麼是 z-base-32?
z-base-32 是 Zooko Wilcox-O'Hearn 設計的一種 Base32 編碼,目標是讓人更容易閱讀、書寫和口述。它的原理與 RFC 4648 Base32 相同:每個字元承載 5 位,5 個位元組變成 8 個字元。真正的區別在於字母表:
ybndrfg8ejkmcpqxot1uwisza345h769
它全部使用小寫,並去掉了 0、2、l 和 v,因為它們容易與 o、z、1 和 u 混淆。字元的順序也經過重新排列,所以同樣的位元組編碼成 z-base-32 後與標準 Base32 完全不同,也無法用 RFC 4648 解碼器讀取。
z-base-32 不使用填充,資料長度由字串長度推算。規範還允許在雙方約定長度的前提下編碼不足整位元組的位串,而本工具始終按整位元組處理。
z-base-32 的應用
- OpenPGP Web Key Directory(WKD)。為了在固定網址釋出公鑰,郵箱地址的本地部分會先轉為小寫再計算 SHA-1,20 位元組的雜湊值經 z-base-32 編碼後成為 32 個字元的檔名。
- ZRTP。通話雙方為識別中間人攻擊而朗讀核對的短認證字串(SAS),可以用 z-base-32 字母表以 Base32 形式呈現(RFC 6189)。
- 閃電網路。lnd、Core Lightning 等節點軟體以 z-base-32 字串返回訊息簽名。
其他便於人工使用的編碼還有 Crockford Base32(數字順序不變,解碼可容錯)和 Base58(更短,但區分大小寫),可以對比選擇。
編碼規格
| 字母表 | ybndrfg8ejkmcpqxot1uwisza345h769 |
|---|---|
| 輸出體積 | 每 5 位元組輸出 8 個字元(160%) |
| 填充 | 無 |
| 標準 | z-base-32(Zooko Wilcox-O'Hearn) |
| 區分大小寫 | 否 |
編碼範例
| 輸入 (UTF-8) | 輸出 |
|---|---|
Hello, World! | jb1sa5dxfoofq551pt1nn |
Base64.is | ejozg3jsgozg1ha |
你好 | h164b3pfzw |
常見問題
z-base-32 和 Base32 一樣嗎?
不一樣。它與 RFC 4648 Base32 一樣按 5 位分組,但字母表不同且順序重排,也不使用填充。z-base-32 字串必須用 z-base-32 解碼器解碼。
z-base-32 區分大小寫嗎?
字母表是小寫的,輸出也始終是小寫。本工具解碼時同樣接受大寫輸入,會先轉換為小寫再解碼。
字串末尾帶有等號怎麼辦?
z-base-32 本身不使用填充,但如果字串末尾有等號,解碼器會直接忽略。
如何得到 WKD 雜湊?
WKD 需要對郵箱地址本地部分的小寫形式計算 SHA-1,本工具不負責計算雜湊。請在其他地方算出雜湊值,以十六進位形式貼上到這裡再編碼。GnuPG 也可以通過
--with-wkd-hash 選項直接顯示 WKD 雜湊。