z-base-32 エンコーダー・デコーダー

テキスト、16進数のバイト列、ファイルを 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 と同じで、1 文字が 5 ビットを表し、5 バイトが 8 文字になります。特徴はそのアルファベットにあります。

ybndrfg8ejkmcpqxot1uwisza345h769

すべて小文字で、o、z、1、u と見間違えやすい 0、2、l、v を除いています。文字の順序も並べ替えられているため、z-base-32 の出力は同じバイト列の標準 Base32 とはまったく異なり、RFC 4648 のデコーダーでは読み取れません。

パディングはなく、データの長さは文字列の長さから決まります。仕様上は、双方が長さについて合意していれば、バイト単位に収まらないビット列もエンコードできますが、このツールは常にバイト単位で処理します。

z-base-32 の用途

  • OpenPGP Web Key Directory(WKD)。鍵を決まった URL で公開するために、メールアドレスのローカル部を小文字にして SHA-1 でハッシュ化し、20 バイトのハッシュを z-base-32 でエンコードして 32 文字のファイル名にします。
  • ZRTP。通話する 2 人が読み上げて中間者攻撃を検出するための短い認証文字列(SAS)は、z-base-32 のアルファベットを使った Base32 で表すことができます(RFC 6189)。
  • Lightning Network。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 ハッシュが必要ですが、このツールはハッシュを計算しません。ハッシュを別の方法で計算し、16進数の入力としてここに貼り付けてエンコードしてください。GnuPG の --with-wkd-hash オプションを使えば、WKD ハッシュを直接表示することもできます。