Base58 encoder en decoder
Invoer
Base58 is een codering van binaire gegevens naar tekst die enkele gemakkelijk te verwarren tekens vermijdt. Het Bitcoin-alfabet laat 0 O I l en + / weg; andere systemen zetten dezelfde 58 symbolen in een andere volgorde. Oudere Bitcoin-adressen met Base58Check en IPFS CIDv0-tekenreeksen zijn bekende voorbeelden. Deze tool werkt alleen in de browser, zet UTF-8-tekst of exacte hexadecimale bytes om met het Bitcoin-, Ripple- of Flickr-alfabet en weigert tekens buiten het gekozen alfabet.
Base58 encoderen en decoderen
-
1
Voer bytes of een Base58-string in
De coderingsrichting accepteert hexadecimaal of ruwe tekst; de decoderingsrichting accepteert Base58.
-
2
Kies het alfabet indien nodig
Standaard is Bitcoin's Base58; Ripple- en Flickr-varianten zijn beschikbaar voor compatibiliteit.
-
3
Voer de conversie uit
Base58 deelt niet netjes op in 5- of 6-bitgroepen; het wordt behandeld als één enkel big-endian geheel getal, herhaaldelijk gedeeld door 58.
-
4
Kopieer het resultaat
Gecodeerde strings behouden leidende nulbytes als leidende `1`-tekens (het teken voor nul in Bitcoin's alfabet).
Het Bitcoin Base58-alfabet
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Let op wat ontbreekt: 0, O, I, l. Het eerste teken in het alfabet is 1, dat het integer 0 vertegenwoordigt.
Hoe het echt werkt
Anders dan Base64, dat bits in vaste groepen opdeelt, behandelt Base58 de hele byte-string als één enkel big-endian geheel getal N en schrijft die in basis 58:
result = []
while N > 0:
result.prepend(alphabet[N mod 58])
N = N / 58
for each leading zero byte in input:
result.prepend(alphabet[0]) # i.e. '1'
Daarom is Base58-codering niet eenvoudig te streamen, je hebt het hele getal nodig voordat je een teken kunt uitgeven.
Base58 versus Base58Check
De gebruikelijke Base58Check-payload van een ouder P2PKH-adres telt 25 bytes: 1 versiebyte, 20 hashbytes en 4 controlesombytes. De controlesom bestaat uit de eerste 4 bytes van de dubbele SHA-256-digest van versie en hash. Base58-codering van die volledige payload levert de bekende adresreeks op.
Deze tool zet alleen gewone Base58 om. Gebruik een speciale Base58Check-validator om de versie en controlesom van een adres te controleren.
Alfabetvarianten
| Variant | Waar gebruikt | Verschillen vs Bitcoin |
|---|---|---|
| Bitcoin | BTC-adressen, IPFS CIDv0 | Basis |
| Ripple | XRP-adressen | Verwisselde posities |
| Flickr | Korte foto-URL’s | Kleine letters vóór hoofdletters |
Waarom niet gewoon Base64 gebruiken?
Base64 heeft geen lengtevariatie tussen binaire en gecodeerde tekst (4 tekens per 3 bytes), wat efficiënt is. Base58 heeft iets variabele overhead maar geen dubbelzinnige tekens, precies wat je wilt wanneer iemand een adres met de hand moet kopiëren of via de telefoon moet voorlezen.
Veelgestelde vragen
Niet universeel. Base58 is beter wanneer mensen de string verwerken; Base64 is beter wanneer machines hem rondsturen. Base64 encodeert 6 bits per teken tegenover Base58’s ~5.86, dus Base64 is iets compacter.
Base58 encodeert een groot integer, dus de lengte varieert een of twee tekens afhankelijk van de high-order bits. Typische P2PKH-adressen zijn 34 tekens, maar 33 is mogelijk.
De tool kan de tekenreeks naar ruwe bytes decoderen. Kies hexadecimale uitvoer om willekeurige bytes zonder verlies weer te geven. Versie en controlesom worden niet gecontroleerd, dus een geslaagde decodering bewijst niet dat het adres geldig is. Gebruik daarvoor een Base58Check-validator.
Ja. Elke nulbyte aan het begin van de invoer wordt een 1-teken in de uitvoer, en zo werken Bitcoin-adressen die met 1 beginnen.
Gerelateerde tools
Base85 encoder en decoder
Encodeer en decodeer Base85 in Adobe Ascii85 (PostScript/PDF) of Z85 (ZeroMQ). Compacter dan Base64 voor binaire data.
bcrypt-generator
Genereer een bcrypt-hash van een plaintext wachtwoord. Instelbare costfactor van 4 tot 14, compatibel met Laravel, Django, Node en PHP.
A1Z26-cijferencoder
Codeer tekst met het A1Z26-cijfer (A=1, B=2, ... Z=26) of decodeer een cijferreeks terug naar letters, met aanpasbaar scheidingsteken.
bcrypt-hashgenerator
Genereer bcrypt-hashes of verifieer een plaintext wachtwoord tegen een bestaande bcrypt-hash. Genereren en verifiëren naast elkaar in een tool.
Base32 encoder en decoder
Encodeer en decodeer Base32-strings met het RFC 4648-alfabet. Handig voor TOTP-secrets, hoofdletterongevoelige tokens en door mensen getypte identifiers.
Atbash-codering
Codeer of decodeer tekst met het Atbash-cijfer, een Hebreeuwse substitutie die A-Z koppelt aan Z-A. Dezelfde bewerking versleutelt en ontsleutelt.