Anleitung
- Wählen Sie „Kodieren“, um einen Base58Check-String zu erzeugen, oder „Dekodieren“, um einen String zu prüfen und seine Bytes zurückzugewinnen.
- Stellen Sie zum Kodieren die Eingabe auf Hex und geben Sie das Versionsbyte gefolgt von den Nutzdaten ein, zum Beispiel 00 und einen 20 Byte langen HASH160.
- Lassen Sie die Option „Base58Check-Prüfsumme“ eingeschaltet. Die Prüfsumme wird beim Kodieren angehängt und beim Dekodieren geprüft.
- Fügen Sie zum Dekodieren den String ein und stellen Sie die Ausgabe auf Hex. Sie erhalten Versionsbyte und Nutzdaten ohne die Prüfsumme.
So funktioniert Base58Check
- Am Anfang steht ein Versionsbyte, das angibt, um welche Art von Daten es sich handelt, gefolgt von den Nutzdaten, etwa dem 20 Byte langen Hashwert eines öffentlichen Schlüssels.
- Diese Bytes werden mit SHA-256 gehasht, das Ergebnis ein zweites Mal mit SHA-256, und die ersten 4 Bytes dienen als Prüfsumme.
- Die Prüfsumme wird angehängt und alles mit Base58 kodiert. Jedes führende
0x00-Byte wird zu einer1.
Dieses Tool berechnet die Prüfsumme über genau die Bytes, die Sie eingeben. Es fügt kein Versionsbyte für Sie hinzu; stellen Sie es daher an den Anfang Ihrer Eingabe. Beim Dekodieren wird die Prüfsumme über alles außer den letzten 4 Bytes neu berechnet. Stimmen die Werte überein, erhalten Sie Versionsbyte und Nutzdaten, andernfalls einen Prüfsummenfehler. Ein zufälliger Tippfehler bleibt nur etwa einmal in vier Milliarden Fällen unentdeckt.
Gängige Versionsbytes
| Versionsbyte | Daten | Kodierter String beginnt mit |
|---|---|---|
0x00 | Bitcoin-P2PKH-Adresse (20-Byte-HASH160) | 1 |
0x05 | Bitcoin-P2SH-Adresse (20-Byte-Skript-Hash) | 3 |
0x6F | P2PKH-Adresse im Bitcoin-Testnet | m oder n |
0x80 | Privater WIF-Schlüssel (32 Bytes, plus 0x01 für einen komprimierten Schlüssel) | 5, bei komprimierten Schlüsseln K / L |
SegWit- und Taproot-Adressen, die mit bc1 beginnen, verwenden Bech32 statt Base58Check und können hier nicht dekodiert werden. Adressen des XRP Ledger verwenden dieselbe Prüfsumme mit dem Ripple-Alphabet: Wählen Sie dazu unter „Alphabet“ die Option „Ripple“.
Beispiel: vom HASH160 zur Adresse
Die bekannte Adresse, die mit dem Genesis-Block von Bitcoin in Verbindung gebracht wird, besteht aus dem Versionsbyte 00, gefolgt von einem 20 Byte langen HASH160. Als Hex-Eingabe mit eingeschalteter Base58Check-Prüfsumme ergibt sich die vertraute Adresse:
Eingabe (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Ausgabe 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Im Code bietet das Python-Paket base58 die Funktionen b58encode_check() und b58decode_check(), und das npm-Paket bs58check stellt encode() und decode() bereit.
Spezifikation
| Alphabet | 1-9 A-Z a-z ohne 0 O I l |
|---|---|
| Ausgabegröße | Etwa 137 % plus 4-Byte-Prüfsumme |
| Auffüllung | Keine |
| Standard | Bitcoin Base58Check |
| Groß-/Kleinschreibung relevant | Ja |
Beispiele
| Eingabe (UTF-8) | Ausgabe |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Häufig gestellte Fragen
Warum schlägt das Dekodieren mit einem Prüfsummenfehler fehl?
Fügt das Tool das Versionsbyte für mich hinzu?
00 für eine Bitcoin-Adresse.Kann ich einen privaten WIF-Schlüssel dekodieren?
80, den 32-Byte-Schlüssel und bei komprimierten Schlüsseln ein abschließendes 01. Die Dekodierung läuft lokal in Ihrem Browser, gehen Sie mit echten privaten Schlüsseln aber trotzdem sorgsam um.Kann ich bc1-Adressen dekodieren?
Nein. Native SegWit- und Taproot-Adressen verwenden Bech32 oder Bech32m, eine andere Kodierung mit eigener Prüfsumme. Bei Bitcoin wird Base58Check nur für Legacy-Adressen verwendet, die mit 1 oder 3 beginnen (im Testnet mit m, n oder 2).