3️⃣ Base32エンコーダ

Base32の符号化・復号(RFC 4648)。A-Zと2-7を使用し、大文字小文字を区別せずバイナリデータを表現。

Base32について

Base32 は RFC 4648 で定義されたバイナリ→テキスト符号化方式です。A-Z と 2-7 からなる 32 文字のアルファベットでバイナリデータを表現し、大文字小文字を区別せず、視覚的に紛らわしい文字(0、1、8、9、O、I)を避けています。5 バイトの入力ごとに 8 文字の出力になり、'=' で 8 文字の倍数に揃えます。このツールはすべてブラウザ内で完結——アップロードは一切ありません。

仕組み

  • エンコード —— バイトを 40 ビット(5 バイト)ブロックにグループ化し、8 つの 5 ビットグループに分割。各グループを A-Z2-7 のアルファベットの 1 文字に対応付けます。
  • デコード —— 各文字を 5 ビット値に戻し、バイトに再構築します。パディング '=' は無視されます。
  • 出力は常に 8 文字の倍数で、残り位置を '=' で埋めます。
  • 符号化は生バイトに対して行われ、UTF-8 のマルチバイト文字はより長い Base32 出力になります。

ユースケース

  • 二要素認証アプリ向けの TOTP/HOTP シークレットキーの符号化。
  • 大文字小文字を区別しないチャネル(メール、QRコード、DNS)でのバイナリデータ転送。
  • 電話で読み上げたり手動入力しやすい形式での鍵保管。
  • ランダムバイトの短く人間に優しい表現の生成。

よくある質問

なぜアルファベットに 0、1、8、9、O、I がないのですか? これらは読み取りや入力の際に他の文字と混同しやすいため、Base32 の 32 文字アルファベットは意図的に除外しています。

なぜ符号化後の出力が入力より長いのですか? Base32 はデータを元のサイズの約 160%(5 バイトあたり 8 文字)に拡張し、さらにパディングが加わります。

末尾の '=' は何ですか? 出力を 8 文字の倍数に揃えるパディングです。RFC 4648 では必須ですが、デコーダでは無視されます。

テキストはアップロードされますか? いいえ。すべての符号化・復号はローカルブラウザで行われます。