コンテンツへスキップ
uencoder

Base58

Base58 は 58 文字を使う人間向けのバイナリテキスト変換であり、紛らわしい 0、O、I、l、+、/ を Base64 から除外している。暗号通貨アドレスで最もよく知られる。

目的

紛らわしい文字(0/O、I/l)による転記ミスを防ぎ、出力がダブルクリックで選択できるように、ターミナルで分割される原因となる文字を使わない。

メカニズム

入力バイト列を 1 つの大きな整数とみなし、58 による剰余を繰り返して各文字のインデックスを得る(基数変換と同様)。先頭のゼロバイトは先頭の 1 に対応する。写像がビット整列しないため符号化長は固定ではなく、復号には多倍長整数演算が必要である。

ユースケース

  • Bitcoin / Litecoin のアドレスエンコード
  • IPFS CID のマルチベース表現
  • Monero のアドレス
  • 短縮リンクや招待コードの生成

例

  • 入力
    Hello World
    Output
    JxF12TrwUP45BMd

    The Bitcoin Base58 alphabet

よくあるエラー

Assuming Base58 works on 6-bit groups (it is actually big-integer modulo arithmetic)
Use a big-integer, byte-by-byte implementation or a mature library

関連用語

関連ツール

References