Base58Check-koder og -dekoder

Tilføj en kontrolsum på 4 bytes beregnet med dobbelt SHA-256, og kod til Base58, eller afkod en Base58Check-streng, kontrollér kontrolsummen, og aflæs versionsbyten og nyttedataene.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Vælg Kod for at opbygge en Base58Check-streng, eller Afkod for at kontrollere en og gendanne dens bytes.
  2. Når du koder, sætter du Input som til Hex og indtaster versionsbyten efterfulgt af nyttedataene, for eksempel 00 og en HASH160 på 20 bytes.
  3. Lad Base58Check-kontrolsum være slået til. Kontrolsummen tilføjes ved kodning og kontrolleres ved afkodning.
  4. Når du afkoder, indsætter du strengen og sætter Output som til Hex. Du får versionsbyten og nyttedataene uden kontrolsummen.

Sådan fungerer Base58Check

  1. Start med en versionsbyte, der angiver, hvad dataene er, efterfulgt af nyttedataene, for eksempel en hashværdi af en offentlig nøgle på 20 bytes.
  2. Hash disse bytes med SHA-256, hash resultatet med SHA-256 igen, og behold de første 4 bytes som kontrolsum.
  3. Tilføj kontrolsummen til sidst, og kod det hele med Base58. Hver foranstillet 0x00-byte bliver til et 1.

Dette værktøj beregner kontrolsummen over præcis de bytes, du indtaster. Det tilføjer ikke en versionsbyte for dig, så den skal stå først i dit input. Ved afkodning beregnes kontrolsummen igen over alt undtagen de sidste 4 bytes. Hvis de stemmer overens, får du versionsbyten og nyttedataene; hvis ikke, får du en kontrolsumfejl. En tilfældig tastefejl slipper kun igennem ca. én gang ud af fire milliarder forsøg.

Almindelige versionsbytes

VersionsbyteDataDen kodede streng begynder med
0x00Bitcoin P2PKH-adresse (HASH160 på 20 bytes)1
0x05Bitcoin P2SH-adresse (scripthash på 20 bytes)3
0x6FP2PKH-adresse på Bitcoin-testnetm eller n
0x80Privat WIF-nøgle (32 bytes plus 0x01 for en komprimeret nøgle)5 eller K / L, hvis den er komprimeret

SegWit- og Taproot-adresser, der begynder med bc1, bruger Bech32, ikke Base58Check, og kan ikke afkodes her. Adresser på XRP Ledger bruger samme kontrolsum med Ripple-alfabetet: Vælg Ripple under Alfabet.

Eksempel: fra HASH160 til adresse

Den velkendte adresse, der er knyttet til Bitcoins genesisblok, består af versionsbyten 00 efterfulgt af en HASH160 på 20 bytes. Når du indtaster den med Input som sat til Hex og Base58Check-kontrolsum slået til, får du den kendte adresse:

Input (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Output       1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

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

Specifikation

Alfabet1-9 A-Z a-z uden 0 O I l
OutputstørrelseCa. 137 % plus en kontrolsum på 4 bytes
UdfyldningIngen
StandardBitcoin Base58Check
Skelner mellem store og små bogstaverJa

Eksempler

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

Ofte stillede spørgsmål

Hvorfor mislykkes afkodningen med en kontrolsumfejl?
Enten er et tegn tastet forkert, det forkerte alfabet er valgt, eller også er strengen almindelig Base58 uden kontrolsum. Almindelige Base58-strenge, for eksempel Solana-adresser og IPFS-CID'er, skal afkodes på siden Base58.
Tilføjer værktøjet versionsbyten for mig?
Nej. Kontrolsummen beregnes over de bytes, du indtaster, så versionsbyten skal være en del af dit input. Sæt Input som til Hex, og skriv den først, for eksempel 00 for en Bitcoin-adresse.
Kan jeg afkode en privat WIF-nøgle?
Ja. Indsæt den under fanen Afkod, og vælg Hex under Output som. Du får 80, nøglen på 32 bytes og for komprimerede nøgler et afsluttende 01. Afkodningen kører lokalt i din browser, men vær alligevel forsigtig med rigtige private nøgler.
Kan jeg afkode bc1-adresser?

Nej. Native SegWit- og Taproot-adresser bruger Bech32 eller Bech32m, en anden kodning med sin egen kontrolsum. I Bitcoin bruges Base58Check kun til ældre adresser, der begynder med 1 eller 3 (m, n eller 2 på testnet).