Base58エンコーダー・デコーダー
入力
Base58は、紛らわしい文字を避けるために設計されたバイナリ・テキスト変換方式です。Bitcoinのアルファベットは0 O I lと+ /を使いません。別のシステムでは、同じ58記号を異なる順序に並べます。従来型BitcoinのBase58CheckアドレスやIPFS CIDv0文字列がよく知られた例です。このツールはブラウザー内だけで動作し、UTF-8テキストまたは正確な16進バイト列をBitcoin、Ripple、Flickrの各アルファベットで変換します。選択したアルファベットにない文字はエラーになります。
Base58をエンコード・デコードする方法
-
1
バイトまたはBase58文字列を入力
エンコード方向では16進数または生のテキストを受け付け、デコード方向ではBase58を受け付けます。
-
2
必要ならアルファベットを選ぶ
標準はBitcoinのBase58です。互換性のためRippleとFlickrのバリアントも選べます。
-
3
変換を実行
Base58は5ビットや6ビットのきれいなグループへ分割しません。1つのビッグエンディアン整数として扱い、58で繰り返し割ります。
-
4
結果をコピー
エンコードされた文字列では、先頭のゼロバイトが先頭の`1`文字(Bitcoinアルファベットでゼロを表す字形)として保持されます。
Bitcoin Base58アルファベット
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
含まれていないものに注目してください。0、O、I、lです。アルファベットの最初の文字は1で、整数0を表します。
実際の仕組み
固定長のビットグループに分けるBase64と違い、Base58はバイト列全体を1つのビッグエンディアン整数Nとして扱い、58進数で表します。
result = []
while N > 0:
result.prepend(alphabet[N mod 58])
N = N / 58
for each leading zero byte in input:
result.prepend(alphabet[0]) # i.e. '1'
そのためBase58エンコードはストリーミングしにくい処理です。文字を出力する前に全体の数値が必要になります。
Base58とBase58Check
従来型P2PKHアドレスの一般的なBase58Checkペイロードは25バイトです。内訳はバージョン1バイト、ハッシュ20バイト、チェックサム4バイトです。チェックサムには、バージョンとハッシュを二重SHA-256にかけた結果の先頭4バイトを使います。このペイロード全体をBase58でエンコードすると、よく知られたアドレス文字列になります。
このツールが変換するのは通常のBase58だけです。アドレスのバージョンとチェックサムを確認する場合は、専用のBase58Checkバリデーターを使用してください。
アルファベットのバリエーション
| バリアント | 用途 | Bitcoinとの違い |
|---|---|---|
| Bitcoin | BTCアドレス、IPFS CIDv0 | 基準(ベースライン) |
| Ripple | XRPアドレス | 文字の位置を入れ替え |
| Flickr | 短い写真URL | 小文字を大文字より先に配置 |
Base64ではだめなのか
Base64はバイナリとエンコード済みテキストの長さ変化が一定(3バイトごとに4文字)で効率的です。Base58は少し可変のオーバーヘッドがありますが、曖昧な文字がありません。手でアドレスをコピーしたり電話で読み上げたりする必要がある場合に欲しい性質です。
よくある質問
常にそうではありません。人が文字列を扱うならBase58が向いています。機械がやり取りするならBase64が向いています。Base64は1文字あたり6ビット、Base58は約5.86ビットなので、Base64のほうが少しコンパクトです。
Base58は大きな整数をエンコードするため、上位ビットによって長さが1~2文字変わります。典型的なP2PKHアドレスは34文字ですが、33文字もあり得ます。
文字列を生のバイトへデコードできます。任意のバイトを失わず表示するには16進出力を選んでください。バージョンやチェックサムは検証しないため、デコードできても有効なアドレスとは限りません。検証にはBase58Checkバリデーターが必要です。
はい。入力の先頭にある各ゼロバイトは、出力では1文字になります。Bitcoinアドレスが1で始まる仕組みです。
関連ツール
チェックサム検証
任意のテキストの MD5、SHA-1、SHA-256、SHA-384、SHA-512、CRC32 チェックサムを計算し、期待値と比較して一致・不一致を明確に判定します。
CSRジェネレーター
PEMエンコードされた証明書署名要求と対応するRSA秘密鍵を生成します。コモンネーム、組織の項目、鍵のサイズ(2048、3072、4096ビット)を指定できます。
暗号化識別子
暗号文またはハッシュ値を貼り付けると、識別子からMD5、SHA、bcrypt、AES、RSA、Base64などの推定されるアルゴリズムや符号化方式が示されます。
ETH/USD 変換ツール
最新のETH/USDレートまたは自分で入力したレートで、イーサリアム(ETH)を米ドルに変換します。任意のETH数量のUSD価値を確認できます。
HMACジェネレーター
メッセージと秘密鍵から、API認証やWebhook向けのHMAC署名(SHA-256、SHA-384、SHA-512、SHA-1、MD5)を生成します。
Base64ファイルエンコーダー
あらゆるファイル(PDF、ZIP、画像、実行ファイル)をBase64テキストにエンコードし、JSON、メール、YAML、data URIへ埋め込めます。ブラウザ内でローカルに動作し、アップロードはありません。
このツールは他の言語でも利用できます
- Base58 인코더 및 디코더 [KO]
- Base58-kodare och avkodare [SV]
- مشفر ومفكك Base58 [AR]
- Koder i dekoder Base58 [PL]
- Base58-Encoder/Decoder [DE]
- Encodeur et décodeur Base58 [FR]
- ตัวเข้ารหัสและถอดรหัส Base58 [TH]
- Encoder dan Decoder Base58 [ID]
- Base58 encoder en decoder [NL]
- Bộ mã hóa và giải mã Base58 [VI]
- Codificador e Decodificador Base58 [PT]
- Codificador y Decodificador Base58 [ES]
- Base58 Encoder and Decoder [EN]
- Codificatore e Decodificatore Base58 [IT]
- Base58 编码器和解码器 [ZH]
- Кодировщик и декодировщик Base58 [RU]
- Base58 Kodlayıcı ve Çözücü [TR]