5️⃣ Base58 エンコーダー

Base58(Bitcoin風)のエンコード・デコード。0、O、I、l を除外した58文字アルファベットを使用し、紛らわしさを防ぎます。

Base58 について

Base58 は Bitcoin によって普及したバイナリtoテキストエンコーディング方式です。一部のフォントで見分けがつきにくい文字——0(ゼロ)、O(大文字オー)、I(大文字アイ)、l(小文字エル)——を除外した58文字アルファベットを使用します。これにより、エンコード結果を人が読んだり手作業で入力したりする際の安全性が高まります。Base64 とは異なり、パディングや特殊文字がないため、URL、ID、短い識別子に適しています。このツールはすべてブラウザ内で完結——アップロードは一切ありません。

仕組み

  • エンコード —— 入力バイトをビッグエンディアン整数として解釈し、58で繰り返し割ります。余りをアルファベットの文字にマッピングし、先頭のゼロバイトは先頭の '1' 文字になります。
  • デコード —— 各文字をインデックス値に変換し、累積合計に乗じて、結果をバイトに戻します。先頭の '1' 文字は先頭のゼロバイトになります。
  • アルファベットは 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz(0、O、I、l を含まない)。
  • エンコードは生バイトに対して行われるため、UTF-8のマルチバイト文字はより長い Base58 出力になります。

ユースケース

  • Bitcoin アドレス、公開鍵、その他のブロックチェーン識別子のエンコード。
  • 短縮リンクや IPFS コンテンツ ID 用のコンパクトで人間に優しい ID の生成。
  • URL安全でない文字を使わずにバイナリデータをURLで表現。
  • ユーザーが手作業で入力する可能性のあるチェックサム付き識別子の表示。

よくある質問

なぜ Base58 は 0、O、I、l を除外するのですか? これらの文字は多くのフォントで互いに、あるいは 1 と混同されやすく、転記ミスの原因になります。除外することで Base58 は手作業での入力がより安全になります。

Base58 は Base64 よりコンパクトですか? いいえ。同じ入力に対し Base58 の出力は Base64 よりわずかに長くなります。Base58 はコンパクトさより可読性を優先しています。

なぜ先頭の '1' 文字が特別なのですか? 入力の各先頭ゼロバイトは出力では '1' として保持されるため、入力がゼロバイトで始まる場合でもエンコードとデコードが正しく往復します。

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