Base58

Base58 im originalen Bitcoin-Sourcecode

Base58 beschreibt ein Verfahren aus dem Computerbereich zur Kodierung von positiven ganzen Zahlen. Das Alphabet von Base58 ergibt sich aus dem der Base62-Kodierung durch Weglassen der vier Zeichen 0 (Null), O (großes o), I (großes i) und l (kleines L). Gegenüber dem Alphabet der Base64-Kodierung fehlen außerdem die Zeichen + (Plus) und / (Schrägstrich).

Kodierungstabelle

Das resultierende Alphabet der Länge 58 lautet 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz, es besteht somit nur aus verwechslungsfreien alpha-numerischen Zeichen.

Dezimal Binär Base58 Dezimal Binär Base58 Dezimal Binär Base58 Dezimal Binär Base58
0 000000 1 16 010000 H 32 100000 Z 48 110000 q
1 000001 2 17 010001 J 33 100001 a 49 110001 r
2 000010 3 18 010010 K 34 100010 b 50 110010 s
3 000011 4 19 010011 L 35 100011 c 51 110011 t
4 000100 5 20 010100 M 36 100100 d 52 110100 u
5 000101 6 21 010101 N 37 100101 e 53 110101 v
6 000110 7 22 010110 P 38 100110 f 54 110110 w
7 000111 8 23 010111 Q 39 100111 g 55 110111 x
8 001000 9 24 011000 R 40 101000 h 56 111000 y
9 001001 A 25 011001 S 41 101001 i 57 111001 z
10 001010 B 26 011010 T 42 101010 j
11 001011 C 27 011011 U 43 101011 k
12 001100 D 28 011100 V 44 101100 m
13 001101 E 29 011101 W 45 101101 n
14 001110 F 30 011110 X 46 101110 o
15 001111 G 31 011111 Y 47 101111 p

Der Vorteil von Base58 im Vergleich zu Base62 und Base64 ist, dass eine Verwechslung zwischen ähnlich aussehenden Zeichen (0, O, o; 1, I, l) unabhängig vom verwendeten Schrift-Font ausgeschlossen ist. Außerdem ist wie bei Base62 (und im Gegensatz zu Base64) durch Verwendung von ausschließlich alpha-numerischen Zeichen (ohne + und /) sichergestellt, dass bei Doppelklick die gesamte Base58-Zeichenkette markiert wird und dass bei Verwendung z. B. in E-Mails kein unerwünschter Zeilenumbruch entsteht. Der Nachteil ist eine etwas längere Zeichenfolge als bei einer Base62- oder Base64-Kodierung. Außerdem können zwei Zahlen, die in binärer Darstellung gleich viele Bits enthalten, in Base58-Darstellung unterschiedlich lang sein, weil 58 keine Zweierpotenz ist. Aus diesem Grund können zum Beispiel die Base58-kodierten Bitcoin-Adressen zwischen 25 bzw. 27 und 34 Zeichen lang sein.[1][2]

Verwendung

Verwendung findet die Base58-Kodierung typischerweise dort, wo lange Integer-Zahlen in kürzere Zeichenketten umgewandelt werden sollen und eine verwechslungsfreie Erkennung der Adresse sichergestellt sein soll, zum Beispiel bei Flickr-Kurz-URLs[3] oder bei Bitcoin-Adressen.

Weblinks

Einzelnachweise

  1. https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses
  2. https://en.bitcoin.it/wiki/Address
  3. flickr short URLs