Base58 エンコーダー / デコーダー
Bitcoin・Flickr・Ripple のアルファベットで Base58 をエンコード/デコード。テキストと 1 MiB までのファイルに対応し、ブラウザ内でローカルに処理します。
入力内容とファイルはブラウザ内に留まります
エンコードするテキストを入力するか、デコードする Base58 を貼り付けてください(下にファイルをドロップすることもできます)。
ここにファイルをドラッグ&ドロップ
ファイルを選択した場合、テキスト入力の代わりに使用されます。
エンコードまたはデコードの結果がここに表示されます。
このページの内容
テキストや小さなファイルを Base58 にエンコードし、Bitcoin・Flickr・Ripple のアルファベットでデコードできます。変換は Rust からコンパイルした WebAssembly がブラウザ内で行うため、貼り付けた鍵や ID は端末の外に出ません。
詳細な機能
Base58 は 58 個の英数字を使い、紛らわしい 0・O・I・l と +・/ を除いているため、読みやすく、打ち直しやすく、ダブルクリックで一括選択できます。Bitcoin アドレス、IPFS CIDv0 ハッシュ、Solana の鍵などで使われています。アルファベットは Bitcoin(最も一般的)、Flickr(小文字が大文字より先。短縮 URL で使用)、Ripple(XRP Ledger)の 3 種類です。
Base64 と違い、Base58 は入力全体を 1 つの大きな数として扱います。パディングはなく、先頭のゼロバイトは Bitcoin アルファベットでは先頭の 1 になります。計算量は入力サイズの 2 乗で増えるため、エンコードは 1 MiB、デコードは 2,000,000 文字までに制限しています。より大きなファイルには Base64 か Hex を使ってください。
これは素の Base58 です。Bitcoin アドレスや WIF 鍵に含まれる 4 バイトの Base58Check チェックサムの付加や検証は行わないため、アドレスをデコードするとバージョンバイト・データ・チェックサムがまとめて得られます。選択した文字セットで有効なテキストにならないバイト列は ダウンロード で保存できます。
実用例
Bitcoin アルファベット: Hello World! は 2NEpo7TZRRrLZSi2U になり、この文字列をデコードすると Hello World! に戻ります。
その他のアルファベット: 同じテキストは Flickr では 2nePN7syqqRkyrH2t、Ripple では p4NFofTZRRiLZS5p7 になります。
不正な文字: 2NEpo0TZRRrLZSi2U(7 の代わりにゼロ)は拒否されます。0 はどの Base58 アルファベットにも含まれないためです。
Bitcoin アドレス: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa をデコードすると 25 バイトの生データ(バージョン、ハッシュ、チェックサム)になり、テキストではない旨が表示され、ダウンロード で保存できます。
このツールの使い方
テキストを入力するかファイルを選ぶ
入力 (テキスト) にテキストを入力または貼り付けるか、1 MiB までのファイルをページにドロップするか ファイルを選択 をクリックします。
アルファベットを選ぶ
アルファベット で Bitcoin (Base58)、Flickr、Ripple のいずれかを選びます。テキスト文字セット はテキストが UTF-8 以外の場合だけ変更します。
エンコードまたはデコードする
エンコード で Base58 を生成し、デコード でテキストやバイト列に戻します。エンコード時と同じアルファベットでデコードしてください。
コピーまたはダウンロードする
コピー で結果をクリップボードへ、ダウンロード でファイルに保存します。バイナリの結果はダウンロードのみ可能です。
ヒントとベストプラクティス
- Base58 の出力は入力より約 37% 長く、Base64 より少し長くなりますが、紛らわしい文字がありません。
- Bitcoin アルファベットの文字列の先頭にある
1は先頭のゼロバイトを表します。削るとデコード結果が変わります。 - アルファベットを間違えると別のバイト列かエラーになります。Ripple を選んだまま
2NEpo7TZRRrLZSi2Uをデコードすると、Hello World!ではなく 13 バイトのバイナリになります。 - 空白/改行を許可 がオンの間はスペースや改行を読み飛ばすので、複数行に分かれた鍵もそのまま貼り付けられます。
- 1 MiB を超えるファイルには、線形時間で処理できる Base64 か Hex を使ってください。