So wandeln Sie Base58 in Base64 um
- Fügen Sie die Base58-Zeichenkette in Eingabe · Base58 ein. Zeilenumbrüche und Leerzeichen werden ignoriert.
- Verwendet sie nicht das Bitcoin-Alphabet, stellen Sie das Alphabet unter der Eingabe auf Flickr oder Ripple.
- Lesen Sie das Base64 in Ausgabe · Base64. Deaktivieren Sie unter der Ausgabe Padding (=) für Base64 ohne Padding, oder setzen Sie den Zeilenumbruch auf 64 oder 76 Spalten.
- Ausgabe kopieren, oder nutzen Sie Base64 → Base58 im Richtungsschalter für den umgekehrten Weg; die Seite Base64 in Base58 startet bereits dort.
Die Zähler unter dem Tool zeigen die Eingabelänge, die Anzahl dekodierter Bytes und die Ausgabelänge. Die Byteanzahl ist der schnellste Test, ob Sie einen ganzen Schlüssel eingefügt haben: 32 für einen Solana-Public-Key, 64 für eine Signatur oder ein Schlüsselpaar, 34 für eine IPFS-CIDv0.
Beispiele
| Base58 | Base64 | Bytes |
|---|---|---|
9Ajdvzr | SGVsbG8= | 5, der Text Hello |
11111111111111111111111111111111 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= | 32 Nullbytes |
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk= | 32, Programm Solana SPL Token |
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq | EiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig== | 34, IPFS CIDv0 |
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | AGLpB7FcvyfVQlOZ6/bw+1DruI8Ywpt9kw== | 25, Bitcoin-Adresse mit Prüfsumme |
Jede CIDv0 ergibt in Base64 einen Anfang mit EiA: Das ist der Multihash-Header 12 20 (SHA-256, 32 Bytes). Entfernen Sie die ersten zwei Bytes, haben Sie den reinen Digest, also die Form, die ein SHA-256-Tool ausgibt.
Warum Solana-Daten in beiden Kodierungen auftauchen
Solana zeigt Public Keys, Programm-IDs und Transaktionssignaturen in Wallets und Explorern als Base58. Die JSON-RPC-API dagegen akzeptiert serialisierte Transaktionen als Base64 oder Base58 und kennzeichnet Base58 als langsame, veraltete Wahl. Kontodaten kommen als Base64 zurück, wenn Sie diese Kodierung anfordern. Derselbe 32-Byte-Schlüssel kann also an einer Stelle als Base58 und an einer anderen innerhalb von Base64 erscheinen.
Die Umwandlung ändert die Bytes nicht und ist daher ein sicherer Weg, zwei Werte zu vergleichen: Ergeben ein Base58-Schlüssel und ein Base64-Schlüssel hier dasselbe Base64, ist es derselbe Schlüssel.
Base58 in Base64 mit Python
Die Standardbibliothek hat Base64, aber kein Base58, die erste Hälfte ist daher eine kurze Schleife:
import base64
ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
def base58_to_base64(s: str) -> str:
n = 0
for ch in s:
n = n * 58 + ALPHABET.index(ch)
body = n.to_bytes((n.bit_length() + 7) // 8, "big")
zeros = len(s) - len(s.lstrip("1"))
return base64.b64encode(b"\0" * zeros + body).decode()
base58_to_base64("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")
# 'Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk='
ALPHABET.index wirft bei Zeichen außerhalb von Base58, etwa 0 oder l, einen ValueError. Mehr zu Base64 in Python finden Sie auf der Python-Seite.
Häufige Probleme
- Es fehlt ein Byte. Der Konverter, den Sie vorher benutzt haben, hat ein führendes Nullbyte verworfen. Diese Seite behält sie; vergleichen Sie die Ausgaben.
- Fehler bei einer
0, einemO,Ioderl. Diese Zeichen sind kein Base58. Prüfen Sie auf einen Kopier- oder OCR-Fehler. - Die Eingabe beginnt mit
bc1,0xoderbafy. Das sind Bech32, Hex bzw. Base32 (IPFS CIDv1), kein Base58. Wie man eine CIDv1 liest, erklärt der Base32-Decoder. - Die Ausgabe ist 4 Bytes länger als erwartet. Die Zeichenkette war Base58Check, und die Prüfsumme hängt noch daran.
Häufige Fragen
Wie wandle ich einen Solana-Public-Key in Base64 um?
Fügen Sie die Adresse in die Eingabe ein. Ein gültiger Solana-Public-Key ergibt dekodiert genau 32 Bytes, die Base64-Ausgabe hat daher immer 44 Zeichen und endet mit einem =, ohne Padding sind es 43.
Warum beginnt das Base64 mit A?
Die Base58-Eingabe begann mit 1, was zu einem Nullbyte dekodiert wird. Base64 bildet sein erstes Zeichen aus den ersten 6 Bit, und sechs Nullbits sind A. Deshalb wird aus der Bitcoin-Adresse 1A1zP1… die Zeichenkette AGLp….
Wie bekomme ich stattdessen URL-sicheres Base64?
Kopieren Sie das Ergebnis in Base64 in Base64URL, das + und / gegen - und _ tauscht und das Padding entfernt. Wenn Sie nur das = loswerden wollen, deaktivieren Sie hier Padding (=).
Ist die Ausgabe bei Base58Check-Zeichenketten anders?
Die Umwandlung ist dieselbe, das Base64 enthält dann aber das Versionsbyte und die 4-Byte-Prüfsumme. Dekodieren Sie zuerst mit dem Base58Check-Tool, wenn Sie nur die Nutzdaten wollen.