z-base-32 編碼解碼

將文字、十六進位位元組或檔案轉換為 z-base-32,也可以反向解碼。它的字母表全部為小寫,去掉了容易混淆的字元,輸出也不需要填充。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 選擇「編碼」把文字轉換為 z-base-32,或選擇「解碼」把 z-base-32 還原為文字。
  2. 保持選擇 z-base-32 變體,並確認「填充」已關閉,因為這種格式不使用填充。
  3. 輸入或貼上內容,也可以開啟檔案,結果會隨輸入即時更新。
  4. 複製結果,或將結果下載為檔案。

什麼是 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.isejozg3jsgozg1ha
你好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 雜湊。