So dekodieren Sie Base58
- Fügen Sie die Zeichenkette in Eingabe · Base58 ein. Leerzeichen und Zeilenumbrüche werden ignoriert.
- Lesen Sie die Bytes in Ausgabe · Hex. Unter der Ausgabe können Sie die Schreibweise umstellen, ein Trennzeichen wie ein Leerzeichen oder
:hinzufügen oder den Dump in 16 oder 32 Bytes pro Zeile umbrechen. - Ist die Zeichenkette kein Base58 im Bitcoin-Stil, stellen Sie das Alphabet unter der Eingabe auf Flickr oder Ripple.
- Für andere Ansichten ändern Sie Nach: Text, wenn die Daten eine Zeichenkette waren, Base64 für eine API oder Konfigurationsdatei. Base58 in Base64 ist eine eigens für diese Umwandlung eingerichtete Seite.
- Ausgabe kopieren, das Hex Herunterladen oder mit Bytes speichern die dekodierten Bytes als Datei erhalten.
Was gängige Base58-Zeichenketten enthalten
| Base58 | Bytes (Hex) | Was es ist |
|---|---|---|
11111111111111111111111111111111 | 32 × 00 | Solana System Program (32-Byte-Schlüssel aus Nullen) |
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | 06ddf6e1d765…7eff00a9 (32 Bytes) | Programm-ID des Solana SPL Token |
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | 00 62e907b1…ebb88f18 c29b7d93 | Adresse des Bitcoin-Genesis-Blocks: Version, Hash, Prüfsumme |
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq | 1220 262a86b6…e0882d8a | IPFS CIDv0: SHA-256-Multihash-Header, 32-Byte-Digest |
9Ajdvzr | 48656c6c6f | Der Text Hello |
An den Bytes lässt sich die Struktur ablesen. Ein Ergebnis mit 25 Bytes, das mit 00 oder 05 beginnt, ist eine Bitcoin-Adresse mit noch angehängter Prüfsumme, ein Ergebnis mit 34 Bytes, das mit 1220 beginnt, ist eine CIDv0, und 32 Bytes ohne erkennbare Struktur sind höchstwahrscheinlich ein Public Key.
Führende 1en sind Nullbytes
In Base58 wird jede führende 1 zu einem Byte 00 dekodiert, und der Rest der Zeichenkette wird als eine einzige Zahl dekodiert. Dieser Decoder behält diese Bytes, die Genesis-Adresse oben liefert also 25 Bytes, nicht 24. Ein Decoder, der nur die Zahl umrechnet, verliert sie, und das erste Anzeichen ist meist ein Schlüssel, dem ein Byte fehlt, oder eine Prüfsumme, die nie stimmt.
Die Regel gilt auch umgekehrt: 1111 sind vier Nullbytes, während 2 das einzelne Byte 01 ist.
Wenn das Dekodieren fehlschlägt
- Unerwartetes Zeichen
"0","O","I"oder"l". Diese vier gehören nicht zum Base58-Alphabet, das sie weglässt, weil sie anderen Zeichen ähneln. Der Fehler nennt die Position; meist ist es ein Abschreibfehler. - Unerwartetes
+,/oder=. Die Zeichenkette ist Base64. Nehmen Sie den Base64-Decoder. - Die Eingabe beginnt mit
bc1. Das ist eine Bech32-SegWit-Adresse, eine andere Kodierung mit eigener Prüfsumme und eigenem Alphabet. Sie scheitert hier oder ergibt bedeutungslose Bytes. - Das Hex stimmt, ist aber 4 Bytes zu lang. Sie haben einen Base58Check-Wert als reines Base58 dekodiert. Die letzten 4 Bytes sind die Prüfsumme; lassen Sie sie weg oder nutzen Sie Base58Check.
- Eingabe über 64 KB. Base58 behandelt die ganze Eingabe als eine Zahl, daher hält das Tool bei 64 KB an, um reaktionsfähig zu bleiben. Echte Base58-Werte haben ein paar Dutzend Zeichen.
Base58 in JavaScript in Hex dekodieren
Mit BigInt wird die Umwandlung kurz. Das funktioniert in Browsern und in Node.js:
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
function base58ToHex(s) {
let n = 0n;
for (const ch of s) {
const v = ALPHABET.indexOf(ch);
if (v < 0) throw new Error(`not Base58: ${ch}`);
n = n * 58n + BigInt(v);
}
let hex = n === 0n ? "" : n.toString(16);
if (hex.length % 2) hex = "0" + hex;
const zeros = s.length - s.replace(/^1+/, "").length;
return "00".repeat(zeros) + hex;
}
base58ToHex("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
// '0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93'
Mehr zum Umgang mit Bytes in JavaScript finden Sie auf der JavaScript-Seite.
Häufige Fragen
Wie dekodiere ich eine Solana-Adresse?
Fügen Sie sie hier ein: Die Hex-Ausgabe ist der 32-Byte-Ed25519-Public-Key. Die Adresse des System Program, 11111111111111111111111111111111, ergibt 32 Nullbytes, so sieht man die Regel für führende Nullen schnell in Aktion.
Warum ergibt meine Bitcoin-Adresse 25 Bytes?
Eine Legacy-Adresse ist Base58Check: 1 Versionsbyte, ein 20-Byte-Public-Key-Hash und eine 4-Byte-Prüfsumme. Reines Base58-Dekodieren liefert alle 25 Bytes. Der Base58Check-Decoder prüft die Prüfsumme und entfernt sie für Sie.
Warum lehnt der Decoder meine Zeichenkette ab?
Base58 kennt kein 0, O, I oder l, eines davon bedeutet also meist einen Tippfehler oder eine andere Kodierung. Eine Zeichenkette mit +, / oder = ist Base64, und 0x… ist Hex.
Wie wandle ich Base58 in JavaScript in Hex um?
Bauen Sie Ziffer für Ziffer einen BigInt auf, geben Sie ihn mit toString(16) aus und setzen Sie für jede führende 1 ein 00 davor. Das Snippet auf dieser Seite zeigt die ganze Funktion.