Base58Check-Encoder und -Decoder

Hängen Sie eine 4-Byte-Prüfsumme aus doppeltem SHA-256 an und kodieren Sie in Base58, oder dekodieren Sie einen Base58Check-String, prüfen Sie seine Prüfsumme und lesen Sie Versionsbyte und Nutzdaten aus.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Wählen Sie „Kodieren“, um einen Base58Check-String zu erzeugen, oder „Dekodieren“, um einen String zu prüfen und seine Bytes zurückzugewinnen.
  2. 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.
  3. Lassen Sie die Option „Base58Check-Prüfsumme“ eingeschaltet. Die Prüfsumme wird beim Kodieren angehängt und beim Dekodieren geprüft.
  4. 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

  1. 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.
  2. Diese Bytes werden mit SHA-256 gehasht, das Ergebnis ein zweites Mal mit SHA-256, und die ersten 4 Bytes dienen als Prüfsumme.
  3. Die Prüfsumme wird angehängt und alles mit Base58 kodiert. Jedes führende 0x00-Byte wird zu einer 1.

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

VersionsbyteDatenKodierter String beginnt mit
0x00Bitcoin-P2PKH-Adresse (20-Byte-HASH160)1
0x05Bitcoin-P2SH-Adresse (20-Byte-Skript-Hash)3
0x6FP2PKH-Adresse im Bitcoin-Testnetm oder n
0x80Privater 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

Alphabet1-9 A-Z a-z ohne 0 O I l
AusgabegrößeEtwa 137 % plus 4-Byte-Prüfsumme
AuffüllungKeine
StandardBitcoin Base58Check
Groß-/Kleinschreibung relevantJa

Beispiele

Eingabe (UTF-8)Ausgabe
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Häufig gestellte Fragen

Warum schlägt das Dekodieren mit einem Prüfsummenfehler fehl?
Entweder wurde ein Zeichen falsch eingegeben, das falsche Alphabet ist ausgewählt oder der String ist einfaches Base58 ohne Prüfsumme. Einfache Base58-Strings wie Solana-Adressen und IPFS-CIDs sollten Sie auf der Seite Base58 dekodieren.
Fügt das Tool das Versionsbyte für mich hinzu?
Nein. Die Prüfsumme wird über die eingegebenen Bytes berechnet, daher muss das Versionsbyte Teil Ihrer Eingabe sein. Stellen Sie die Eingabe auf Hex um und geben Sie es zuerst ein, zum Beispiel 00 für eine Bitcoin-Adresse.
Kann ich einen privaten WIF-Schlüssel dekodieren?
Ja. Fügen Sie ihn unter „Dekodieren“ ein und wählen Sie die Hex-Ausgabe. Sie erhalten 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).