Sådan bruger du værktøjet
- Vælg Kod for at opbygge en Base58Check-streng, eller Afkod for at kontrollere en og gendanne dens bytes.
- 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.
- Lad Base58Check-kontrolsum være slået til. Kontrolsummen tilføjes ved kodning og kontrolleres ved afkodning.
- 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
- 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.
- Hash disse bytes med SHA-256, hash resultatet med SHA-256 igen, og behold de første 4 bytes som kontrolsum.
- Tilføj kontrolsummen til sidst, og kod det hele med Base58. Hver foranstillet
0x00-byte bliver til et1.
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
| Versionsbyte | Data | Den kodede streng begynder med |
|---|---|---|
0x00 | Bitcoin P2PKH-adresse (HASH160 på 20 bytes) | 1 |
0x05 | Bitcoin P2SH-adresse (scripthash på 20 bytes) | 3 |
0x6F | P2PKH-adresse på Bitcoin-testnet | m eller n |
0x80 | Privat 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
| Alfabet | 1-9 A-Z a-z uden 0 O I l |
|---|---|
| Outputstørrelse | Ca. 137 % plus en kontrolsum på 4 bytes |
| Udfyldning | Ingen |
| Standard | Bitcoin Base58Check |
| Skelner mellem store og små bogstaver | Ja |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Ofte stillede spørgsmål
Hvorfor mislykkes afkodningen med en kontrolsumfejl?
Tilføjer værktøjet versionsbyten for mig?
00 for en Bitcoin-adresse.Kan jeg afkode en privat WIF-nøgle?
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).