Base58
Base58 は 58 文字を使う人間向けのバイナリテキスト変換であり、紛らわしい 0、O、I、l、+、/ を Base64 から除外している。暗号通貨アドレスで最もよく知られる。
目的
紛らわしい文字(0/O、I/l)による転記ミスを防ぎ、出力がダブルクリックで選択できるように、ターミナルで分割される原因となる文字を使わない。
メカニズム
入力バイト列を 1 つの大きな整数とみなし、58 による剰余を繰り返して各文字のインデックスを得る(基数変換と同様)。先頭のゼロバイトは先頭の 1 に対応する。写像がビット整列しないため符号化長は固定ではなく、復号には多倍長整数演算が必要である。
ユースケース
- Bitcoin / Litecoin のアドレスエンコード
- IPFS CID のマルチベース表現
- Monero のアドレス
- 短縮リンクや招待コードの生成
例
- 入力
Hello WorldOutputJxF12TrwUP45BMdThe 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
関連用語
Base64
Base64 は任意のバイナリデータを 64 種類の印刷可能 ASCII 文字(A-Z、a-z、0-9、+、/)へ写像し、バイナリデータをテキスト専用チャネルで伝送できるようにする。 用語集
Base32
Base32 はバイナリデータを 32 文字のアルファベット(A-Z と 2-7)へ写像する。出力は大文字と数字のみで構成され、読み上げや手入力が容易である。 用語集
Multibase
Multibaseは自己記述的なエンコーディングプレフィックス方式である。単一文字のプレフィックスが後続データのエンコーディングを識別する(例:BはBase64、fはhex、zはBase58BTC)。IPFS/Multiformatsが提案した。 用語集