Base32・Base58・Base85などのエンコード

テキストや16進のバイト列を Base32・Base32hex・Crockford Base32・Base58・Base58Check・Ascii85・Z85・Base45・Base36・Base62 へまとめて変換し、逆方向のデコードもします。

—

入力すると各方式へ変換します。

変換結果

    補足

    • Base32・Base32hex は RFC 4648 のとおりです。Crockford Base32 は数値ではなくバイト列を 5 ビットずつ区切る方式(ULID などと同じ)で変換し、末尾の検査用文字には対応していません。
    • Base58・Base36・Base62 はバイト列全体を 1 つの大きな整数として変換します。整数にすると消えてしまう 先頭の 0x00 は、アルファベットの先頭の文字(Base58 なら 1)を同じ数だけ付けて残します。
    • Base58Check は入力を「バージョンバイトを含む本体」とみなし、SHA-256 を 2 回かけた先頭 4 バイトを付けます。デコード時は検査値を確かめ、本体だけを返します。
    • Z85 は仕様上 4 バイト単位でしか変換できません。端数があるときはエラーになります(自動で埋めることはしません)。
    • Base45 は空白も文字の一部なので、デコード時に空白を読み飛ばしません。
    • 入力した内容は、この端末の外へ出ません。

    よくある質問

    Base64 との違いは何ですか? Base64 にも変換できますか?

    このページでは Base64 は扱いません。Base64 は「Base64 エンコード・デコード」のページ(/base64/)で変換できます。Base32 は大文字と数字だけで読み書きしやすい代わりに約1.6倍、Base58 は紛らわしい 0 O I l を除いた文字で約1.37倍、Ascii85・Z85 は記号も使って約1.25倍の長さになります。用途(手入力・URL・QR コードなど)に合わせて選ばれています。

    Z85 で「4 バイト単位でしか変換できません」と表示されます。

    Z85 は仕様(ZeroMQ RFC 32)で、4バイト単位のデータしか扱えないと決められているためです。このツールは勝手に0を足して埋めることはしません。長さを4の倍数にしてから変換するか、端数を扱える Ascii85 を使ってください。デコード時も文字数が5の倍数でないとエラーになります。

    Base58 の先頭に 1 がたくさん付くのはなぜですか?

    データ先頭の 0x00 バイトを残すためです。Base58 はバイト列全体を1つの大きな整数として変換するので、そのままでは先頭の0が消えてしまいます。そこで Bitcoin と同じく、先頭の 0x00 の数だけ「1」を付けます。Base36・Base62 でも同じ考え方で、先頭の 0x00 の数だけ「0」を付けています。

    Base58Check はビットコインアドレスの検証に使えますか?

    検査値(SHA-256 を2回かけた先頭4バイト)が合っているかの確認には使えます。デコードでは検査値が一致しない場合にエラーを出し、一致すればバージョンバイトを含む本体を16進で表示します。ただし、Bech32(bc1 で始まるアドレス)には対応しておらず、アドレスの種類やネットワークの判定もしません。

    デコードで「使えない文字」と表示されたときは?

    何文字目の何という文字が、その方式のアルファベットに無いかを表示します。Base58 の 0 O I l のように、見間違いを避けるため意図的に除かれた文字も多いので、方式の選択が合っているかを確認してください。Base32 と Base36 は大文字小文字を区別せず、Crockford Base32 は I・L を 1、O を 0 として読み、ハイフンを無視します。

    ↑↓ 移動 / Enter 開く / Esc 閉じる