Anleitung
- Wählen Sie „Kodieren“, um Text oder Bytes in Base58 umzuwandeln, oder „Dekodieren“, um einen Base58-String wieder in Daten umzuwandeln.
- Wählen Sie unter „Alphabet“ die passende Variante. „Bitcoin“ ist voreingestellt und wird auch von IPFS und Solana verwendet.
- Geben Sie Ihre Eingabe ein oder fügen Sie sie ein. Stellen Sie die Eingabe auf Hex um, wenn Sie Rohbytes wie einen Hashwert oder einen öffentlichen Schlüssel haben.
- Aktivieren Sie die „Base58Check-Prüfsumme“ nur, wenn der String eine 4-Byte-Prüfsumme enthält. Kopieren Sie das Ergebnis anschließend oder laden Sie es herunter.
Was ist Base58?
Base58 ist eine Binär-zu-Text-Kodierung, die für Bitcoin entwickelt wurde. Ihr Alphabet besteht aus den 62 Ziffern und lateinischen Buchstaben, abzüglich vier leicht verwechselbarer Zeichen: 0 (Null), O (großes O), I (großes i) und l (kleines L). Außerdem fehlen +, / und =, sodass sich ein Base58-String per Doppelklick markieren und ohne Maskierung in eine URL einfügen lässt.
Anders als Base64 zerlegt Base58 die Eingabe nicht in Bitgruppen. Die gesamte Eingabe wird als eine einzige große Zahl behandelt und zur Basis 58 geschrieben. Es gibt daher keine Auffüllung, und die Änderung eines einzelnen Bytes kann viele Ausgabezeichen verändern. Führende Nullbytes haben keinen Zahlenwert; damit sie erhalten bleiben, wird jedes von ihnen als erstes Zeichen des Alphabets geschrieben (1 im Bitcoin-Alphabet). Die Ausgabe ist etwa 1,37-mal so groß wie die Eingabe.
Wo Base58 verwendet wird
- Bitcoin. Legacy-Adressen und private WIF-Schlüssel sind Base58Check: Base58 mit einem Versionsbyte und einer Prüfsumme.
- IPFS. Ein Content Identifier der Version 0 (CIDv0) ist die Base58-Form eines SHA-256-Multihashes. Deshalb sind diese CIDs 46 Zeichen lang und beginnen mit
Qm. - Solana. Öffentliche Schlüssel, Kontoadressen und Transaktionssignaturen werden in einfachem Base58 ohne Prüfsumme geschrieben. Ein 32-Byte-Schlüssel ergibt meist 43 oder 44 Zeichen.
- Flickr und XRP Ledger. Flickr-Kurzlinks verwenden das Flickr-Alphabet und XRP-Adressen das Ripple-Alphabet, weshalb sie mit
rbeginnen.
Um zwischen Base58 und Rohbytes umzuwandeln, verwenden Sie Base58 zu Hex und Hex zu Base58. Für Kennungen, die lediglich alphanumerisch sein müssen, lohnt sich ein Vergleich mit Base62.
Base58-Alphabete
| Alphabet | Zeichen in Reihenfolge |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
Alle drei verwenden dieselben 58 Zeichen in unterschiedlicher Reihenfolge. Ein mit einem Alphabet kodierter String ergibt mit einem anderen Alphabet daher andere Bytes oder lässt sich gar nicht dekodieren.
Base58 im Code
# Python (pip install base58)
import base58
base58.b58encode(b'hello') # b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # b'hello'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
Spezifikation
| Alphabet | 1-9 A-Z a-z ohne 0 O I l |
|---|---|
| Ausgabegröße | Etwa 137 % (Großzahl-Umrechnung) |
| Auffüllung | Keine (führende Nullbytes werden zu 1) |
| Standard | Bitcoin Base58 |
| Groß-/Kleinschreibung relevant | Ja |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Häufig gestellte Fragen
Warum werden führende Nullbytes zu 1?
1. Deshalb ergeben 32 Nullbytes eine Folge von 32 Einsen.Unterscheidet Base58 zwischen Groß- und Kleinschreibung?
Ja. Groß- und Kleinbuchstaben sind unterschiedliche Ziffern. Ändert sich die Schreibweise auch nur eines Zeichens, ergeben sich andere dekodierte Bytes oder der String wird ungültig.