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 として読み、ハイフンを無視します。