Base58Check-koder og -dekoder

Legg til en dobbel SHA-256-kontrollsum på 4 byte og kod til Base58, eller dekod en Base58Check-streng, verifiser kontrollsummen og les versjonsbyten og nyttelasten.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Velg Kode for å lage en Base58Check-streng, eller Dekode for å verifisere en og hente ut bytene.
  2. For å kode setter du inndata til Hex og skriver inn versjonsbyten etterfulgt av nyttelasten, for eksempel 00 og en HASH160 på 20 byte.
  3. La Base58Check-kontrollsum være slått på. Kontrollsummen legges til ved koding og verifiseres ved dekoding.
  4. For å dekode limer du inn strengen og setter utdata til Hex. Du får versjonsbyten og nyttelasten uten kontrollsummen.

Slik fungerer Base58Check

  1. Begynn med en versjonsbyte som angir hva dataene er, etterfulgt av nyttelasten, for eksempel en hash av en offentlig nøkkel på 20 byte.
  2. Hash disse bytene med SHA-256, hash resultatet med SHA-256 én gang til, og behold de første 4 bytene som kontrollsum.
  3. Legg til kontrollsummen og kod alt med Base58. Hver innledende 0x00-byte blir til 1.

Dette verktøyet beregner kontrollsummen over nøyaktig de bytene du skriver inn. Det legger ikke til noen versjonsbyte for deg, så den må stå først i inndataene. Ved dekoding beregnes kontrollsummen på nytt over alt unntatt de siste 4 bytene. Stemmer de overens, får du versjonsbyten og nyttelasten; hvis ikke får du en kontrollsumfeil. En tilfeldig skrivefeil slipper gjennom bare omtrent én gang av fire milliarder forsøk.

Vanlige versjonsbyter

VersjonsbyteDataKodet streng begynner med
0x00Bitcoin P2PKH-adresse (HASH160 på 20 byte)1
0x05Bitcoin P2SH-adresse (skripthash på 20 byte)3
0x6FBitcoin P2PKH-adresse på testnettm eller n
0x80Privat WIF-nøkkel (32 byte, pluss 0x01 for en komprimert nøkkel)5, eller K / L hvis komprimert

SegWit- og Taproot-adresser som begynner med bc1, bruker Bech32, ikke Base58Check, og kan ikke dekodes her. Adresser i XRP Ledger bruker samme kontrollsum med Ripple-alfabetet: Velg Ripple under Alfabet.

Eksempel: fra HASH160 til adresse

Den velkjente adressen som er knyttet til genesis-blokken i Bitcoin, er versjonsbyte 00 etterfulgt av en HASH160 på 20 byte. Skrevet inn som Hex-inndata med Base58Check-kontrollsum slått på gir den den kjente adressen:

Inndata (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Utdata         1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

I kode har Python-pakken base58 funksjonene b58encode_check() og b58decode_check(), og npm-pakken bs58check tilbyr encode() og decode().

Spesifikasjon

Alfabet1-9 A-Z a-z uten 0 O I l
UtdatastørrelseOmtrent 137 % pluss en kontrollsum på 4 byte
UtfyllingIngen
StandardBitcoin Base58Check
Skiller store og små bokstaverJa

Eksempler

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

Ofte stilte spørsmål

Hvorfor feiler dekodingen med en kontrollsumfeil?
Enten er et tegn skrevet feil, feil alfabet er valgt, eller strengen er ren Base58 uten kontrollsum. Rene Base58-strenger, som Solana-adresser og IPFS-CID-er, bør dekodes på siden Base58.
Legger verktøyet til versjonsbyten for meg?
Nei. Kontrollsummen beregnes over bytene du skriver inn, så versjonsbyten må være en del av inndataene. Bytt inndata til Hex og skriv den først, for eksempel 00 for en Bitcoin-adresse.
Kan jeg dekode en privat WIF-nøkkel?
Ja. Lim den inn i fanen Dekode og velg Hex som utdata. Du får 80, nøkkelen på 32 byte og, for komprimerte nøkler, en avsluttende 01. Dekodingen skjer lokalt i nettleseren, men vær likevel forsiktig med ekte private nøkler.
Kan jeg dekode bc1-adresser?

Nei. Native SegWit- og Taproot-adresser bruker Bech32 eller Bech32m, en annen koding med sin egen kontrollsum. I Bitcoin brukes Base58Check bare for eldre adresser som begynner med 1 eller 3 (m, n eller 2 på testnett).