Conversor de Base58 para Hex

Cole uma string Base58, como um endereço Bitcoin, uma chave pública Solana ou um hash IPFS, e obtenha seus bytes brutos em hexadecimal. Cada 1 inicial vira um byte 00.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Cole a string Base58 na caixa de entrada. Espaços e quebras de linha são ignorados.
  2. Leia os bytes decodificados em hexadecimal na saída.
  3. Copie o hex ou clique em Inverter entrada e saída para transformar hex de volta em Base58.

Como o Base58 vira hex

O Base58 lê a string inteira como um único número grande escrito com o alfabeto Bitcoin de 58 caracteres, que deixa de fora 0, O, I e l. Converter para hex escreve o mesmo número na base 16, com dois dígitos hex por byte, então nada é acrescentado nem perdido.

Bytes zero no início dos dados não têm valor numérico, por isso o Base58 registra cada um deles como um 1 inicial, o primeiro caractere do seu alfabeto. O decodificador transforma cada 1 inicial de volta em um byte 00. Por exemplo, 115Q é decodificado como 0000ff, e o endereço do System Program da Solana, trinta e dois caracteres 1 seguidos, é decodificado como 32 bytes zero. A conversão é feita localmente no seu navegador.

Exemplos de Bitcoin, Solana e IPFS

Foram acrescentados espaços ao hex abaixo para mostrar as partes:

Endereço Bitcoin (P2PKH, bloco gênese)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
versão | hash160 (20 bytes) | soma de verificação (4 bytes)

Chave pública Solana (programa SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 bytes, sem byte de versão, sem soma de verificação

IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | comprimento 32 | digest

Os endereços Bitcoin legados começam com 1 porque o byte de versão deles é 00. Endereços P2SH começam com 3 e são decodificados com a versão 05.

A soma de verificação do Base58Check permanece nos bytes

Endereços Bitcoin e chaves privadas WIF usam Base58Check: quatro bytes de soma de verificação, obtidos de um SHA-256 duplo do payload, são acrescentados antes da codificação. Esta página usa Base58 simples, então a soma de verificação é decodificada como qualquer outro dado e aparece como os últimos 8 dígitos hex. O hash160 de um endereço legado são os 40 dígitos hex entre o 00 inicial e a soma de verificação.

Para confirmar que um endereço está íntegro e obter o payload sem a soma de verificação, decodifique-o na página Base58Check. Chaves Solana e hashes IPFS não têm soma de verificação, então o Base58 simples é a escolha certa para eles.

Base58 para hex no código

# Python (pip install base58)
import base58
base58.b58decode('115Q').hex()      # '0000ff'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex');   // '0000ff'

Perguntas frequentes

Por que um endereço Bitcoin é decodificado em 25 bytes e não em 20?

Um endereço legado contém 1 byte de versão, o hash160 de 20 bytes da chave pública e uma soma de verificação de 4 bytes. O Base58 simples devolve as três partes, então você obtém 50 dígitos hex. O hash160 é tudo o que fica entre o primeiro byte e os quatro últimos.

Por que cada 1 inicial vira 00?

No Base58, o caractere 1 representa o valor zero. Bytes zero iniciais desapareceriam se os dados fossem tratados como um número comum, então cada um é escrito como 1 e decodificado de volta como um byte 00.

Por que recebo um erro de caractere inválido?
O alfabeto Bitcoin não tem 0, O, I nem l, então uma string que contém esses caracteres não é Base58. Endereços Bitcoin que começam com bc1 usam Bech32, que é outra codificação. Endereços Ripple (XRP) usam um alfabeto Base58 próprio; decodifique-os na página Base58 com o alfabeto Ripple selecionado.
Qual é o tamanho de uma chave pública Solana?

Exatamente 32 bytes, ou 64 dígitos hex. Em Base58, isso costuma dar 43 ou 44 caracteres. Chaves que começam com bytes zero podem ser mais curtas, como mostra o endereço do System Program.