Base58Check-encoder en -decoder

Voeg een controlesom van 4 bytes (dubbele SHA-256) toe en codeer naar Base58, of decodeer een Base58Check-string, controleer de controlesom en lees de versiebyte en de payload uit.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Kies Coderen om een Base58Check-string te maken, of Decoderen om er een te controleren en de bytes terug te halen.
  2. Zet bij het coderen Invoer als op Hex en voer de versiebyte in, gevolgd door de payload, bijvoorbeeld 00 en een HASH160 van 20 bytes.
  3. Laat de optie Base58Check-controlesom aan staan. De controlesom wordt bij het coderen toegevoegd en bij het decoderen gecontroleerd.
  4. Plak bij het decoderen de string en zet Uitvoer als op Hex. Je krijgt de versiebyte en de payload, zonder de controlesom.

Zo werkt Base58Check

  1. Begin met een versiebyte die aangeeft wat voor gegevens het zijn, gevolgd door de payload, bijvoorbeeld een hash van een publieke sleutel van 20 bytes.
  2. Hash deze bytes met SHA-256, hash het resultaat nog een keer met SHA-256 en bewaar de eerste 4 bytes als controlesom.
  3. Voeg de controlesom toe en codeer alles met Base58. Elke voorloopbyte 0x00 wordt een 1.

Deze tool berekent de controlesom over precies de bytes die je invoert. Er wordt geen versiebyte voor je toegevoegd, dus zet die zelf aan het begin van je invoer. Bij het decoderen wordt de controlesom opnieuw berekend over alles behalve de laatste 4 bytes. Komen ze overeen, dan krijg je de versiebyte en de payload; zo niet, dan krijg je een controlesomfout. Een willekeurige typefout glipt er maar ongeveer één keer op de vier miljard pogingen doorheen.

Veelgebruikte versiebytes

VersiebyteGegevensGecodeerde string begint met
0x00Bitcoin-P2PKH-adres (HASH160 van 20 bytes)1
0x05Bitcoin-P2SH-adres (scripthash van 20 bytes)3
0x6FP2PKH-adres op het Bitcoin-testnetm of n
0x80WIF-privésleutel (32 bytes, plus 0x01 voor een gecomprimeerde sleutel)5, of K / L bij compressie

SegWit- en Taproot-adressen die met bc1 beginnen, gebruiken Bech32 en geen Base58Check, en kunnen hier niet worden gedecodeerd. Adressen op de XRP Ledger gebruiken dezelfde controlesom met het Ripple-alfabet: kies Ripple bij de optie Alfabet.

Voorbeeld: van HASH160 naar adres

Het bekende adres dat bij het genesisblok van Bitcoin hoort, bestaat uit versiebyte 00 gevolgd door een HASH160 van 20 bytes. Als je dit als Hex-invoer opgeeft met Base58Check aan, krijg je het vertrouwde adres:

Invoer (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Uitvoer       1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

In code biedt het Python-pakket base58 de functies b58encode_check() en b58decode_check(), en het npm-pakket bs58check heeft encode() en decode().

Specificatie

Alfabet1-9 A-Z a-z zonder 0 O I l
UitvoergrootteOngeveer 137% plus een controlesom van 4 bytes
OpvullingGeen
StandaardBitcoin Base58Check
HoofdlettergevoeligJa

Voorbeelden

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

Veelgestelde vragen

Waarom mislukt het decoderen met een controlesomfout?
Er is een teken verkeerd getypt, het verkeerde alfabet is geselecteerd, of de string is gewone Base58 zonder controlesom. Gewone Base58-strings, zoals Solana-adressen en IPFS-CID's, decodeer je op de pagina Base58.
Voegt de tool de versiebyte voor me toe?
Nee. De controlesom wordt berekend over de bytes die je invoert, dus de versiebyte moet deel uitmaken van je invoer. Zet Invoer als op Hex en typ de versiebyte als eerste, bijvoorbeeld 00 voor een Bitcoin-adres.
Kan ik een WIF-privésleutel decoderen?
Ja. Plak hem op het tabblad Decoderen en zet Uitvoer als op Hex. Je krijgt 80, de sleutel van 32 bytes en bij gecomprimeerde sleutels een afsluitende 01. Het decoderen gebeurt lokaal in je browser, maar ga toch voorzichtig om met echte privésleutels.
Kan ik bc1-adressen decoderen?

Nee. Native SegWit- en Taproot-adressen gebruiken Bech32 of Bech32m, een andere codering met een eigen controlesom. Binnen Bitcoin wordt Base58Check alleen gebruikt voor legacy-adressen die met 1 of 3 beginnen (m, n of 2 op het testnet).