言語:日本語

tools / base58

base58/

テキストや hex と Base58 を相互変換。ビットコインの文字表を使用します。先頭の 00 バイトは先頭の 1 に対応します。

入力

Base58

よくある質問

Base58 に 0・O・I・l がないのはなぜですか? デコード時に文字が Base58 の文字表にないと表示されたらどうすればよいですか?

Base58 は、手書きや目視で見間違えやすい数字の 0、大文字の O、大文字の I、小文字の l を意図的に除いています。残る 58 文字は、1 から 9、大文字の A から Z(I と O を除く)、小文字の a から z(l を除く)です。デコード時に文字表にない文字があると、何文字目のどの文字かが表示されます。コピー時に引用符・句読点・目に見えない文字が混ざっていないか確認してください。スペースと改行は自動的に無視されます。文字列に 0、O、I、l が最初から含まれているなら、Base58 ではなく Base64、hex、あるいは別のエンコードである可能性が高いです。

Base58 のデコードで「有効な UTF-8 テキストではない」と出たらどうすればよいですか?

デコードしたバイト列が UTF-8 のテキストではないという意味です。秘密鍵、公開鍵ハッシュ、アドレスなどは最初からバイナリのデータです。「出力形式」を hex に変更すると、元のバイト列を確認できます。テキストは常に UTF-8 として扱うため、GBK など別の文字コードで書かれたバイト列は、ここではテキストとして表示できません。その文字コードに対応したツールで変換してください。

Base58 の結果の先頭にある 1 は何ですか? hex の先頭の 00 が 1 になるのはなぜですか?

Base58 はバイト列全体を 1 つの大きな整数とみなして基数を変換するため、先頭の 00 バイトは数値としては何も足さず、そのままでは消えてしまいます。そこで、先頭の 00 バイト 1 つにつき、先頭の 1 を 1 つ書く(文字表の 0 番目の文字)という決まりになっています。たとえば hex の 0000010203 は 11Ldp になり、先頭の 2 つの 1 が 2 つの 00 に対応します。デコードでは、先頭の 1 の数だけ 00 バイトに戻ります。00 だけで構成された入力は、1 が並ぶだけの結果になります。

ビットコインアドレスをデコードできますか? Base58Check のチェックサムはどうなりますか?

バイト列にはデコードできますが、検証は行いません。ビットコインアドレスは Base58Check を使っており、バージョンバイト、データ、4 バイトのチェックサムをつなげてから Base58 にします。このツールは通常の Base58 だけを扱うため、デコードするとチェックサムを含む元のバイト列がそのまま得られ、チェックサムの確認も削除も行わず、エンコード時に付け足すこともしません。たとえば 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa を(出力を hex にして)デコードすると 25 バイトになり、内訳は 1 バイトのバージョン 00、20 バイトのハッシュ、末尾 4 バイトのチェックサムです。

Base58 と Base64 は何が違いますか?

Base64 は 64 文字(+ と / を含み、末尾に = が付くことがある)を使い、3 バイトずつ変換するため、高速で長さも予測できます。Base58 は見間違えやすい文字と + / = を除いているので、ダブルクリックで文字列全体を選択でき、手で書き写してもミスが起きにくくなります。その代わり、データ全体を大きな整数として割り算するため、長くなるほど遅くなります。そのため、アドレスや鍵のような数十バイトほどの短いデータに多く使われます。両者の結果に互換性はありません。

エンコード結果が他のサイトやライブラリと違うのはなぜですか?

次の 3 点を確認してください。文字表:このツールはビットコインの文字表を使います。Flickr の文字表は小文字が先で、Ripple はさらに別の順序なので、結果が違って当然です。入力内容:テキストは UTF-8 のまま変換されるため、末尾に改行やスペースが 1 つ増えるだけで結果が変わります。入力形式:hex のバイト列をエンコードするなら hex を選ばないと、0a1b が 4 文字のテキストとして扱われます。hex 入力は、スペース・コロン・カンマ区切りや 0x プレフィックスに対応していて、桁数は偶数である必要があります。

Base58 の入力に長さの制限はありますか?

あります。エンコードは最大 32768 バイト、デコードは最大 45000 文字で、超えると分割して処理するよう表示されます。Base58 の計算量は長さの 2 乗で増えるため、ページが固まらないように上限を設けています。数 KB 以内なら、ほぼ一瞬で結果が出ます。

入力した内容はアップロードされますか?

いいえ。エンコードもデコードもブラウザ内で行われ、サーバーには送信されません。