Conversor de Hex para Base58

Cole bytes em hexadecimal e obtenha a string Base58 usada por Bitcoin, Solana e IPFS. Cada byte 00 inicial vira um 1 inicial, e todos os outros bytes são mantidos exatamente.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Cole os bytes hex na caixa de entrada. Espaços, dois-pontos e o prefixo 0x são aceitos.
  2. Leia o resultado em Base58 na saída.
  3. Copie-o ou clique em Inverter entrada e saída para decodificar o Base58 de volta para hex.

Como o hex vira Base58

Primeiro, os dígitos hex são transformados em bytes, dois dígitos por byte, por isso a entrada precisa ter um número par de dígitos. Em seguida, os bytes são lidos como um único número big-endian e reescritos na base 58 com o alfabeto Bitcoin. Cada byte 00 inicial é escrito como 1, e é por isso que 0000ff vira 115Q, enquanto ff sozinho vira 5Q.

O Base58 precisa de cerca de 1,37 caractere por byte, então 64 dígitos hex (32 bytes) encolhem para 43 ou 44 caracteres. O alfabeto não tem 0, O, I, l, + nem /, então o resultado é fácil de ler em voz alta, pode ser selecionado com um clique duplo e cabe em URLs. Tudo é calculado no seu navegador.

Como montar identificadores Solana e IPFS

  • Solana: um endereço é a chave pública Ed25519 de 32 bytes em Base58, sem prefixo e sem soma de verificação. Cole a chave hex de 64 dígitos para obter o endereço.
  • IPFS CIDv0: um CIDv0 é um multihash sha2-256 em Base58. Coloque 1220 na frente do digest de 64 dígitos e você obtém uma string de 46 caracteres que começa com Qm. O digest precisa ser aquele que o IPFS calculou para o bloco codificado, que não é o mesmo que o SHA-256 do arquivo original.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Endereços Bitcoin precisam de soma de verificação

Um hash160 sozinho não é um endereço. Um endereço Bitcoin legado é o Base58Check do byte de versão 00 seguido do hash160 de 20 bytes, o que acrescenta uma soma de verificação de 4 bytes, calculada com SHA-256 duplo, antes da codificação. Codificar 00 e o hash160 com Base58 simples gera uma string mais curta sem soma de verificação, e as carteiras a rejeitam.

Use a página Base58Check: mude a entrada para hex, digite 00 seguido do hash160, e a soma de verificação é acrescentada para você. Se o seu hex já termina com a soma de verificação correta, esta página gera o mesmo endereço.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Hex para Base58 no código

# Python (pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # b'115Q'

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

Perguntas frequentes

Como transformar um hash160 em um endereço Bitcoin?
Coloque o byte de versão 00 na frente dele e codifique com Base58Check, e não com Base58 simples. A página Base58Check faz isso quando você digita os bytes em hex.
Por que o resultado começa com vários caracteres 1?

O seu hex começa com a mesma quantidade de bytes 00. O Base58 os mantém como caracteres 1 iniciais para que sejam restaurados quando a string for decodificada.

Por que minha entrada hex é rejeitada?

O hex precisa de um número par de dígitos e apenas dos caracteres 0-9 e a-f, em maiúsculas ou minúsculas. Espaços, dois-pontos e o prefixo 0x são removidos automaticamente; qualquer outra coisa, como uma letra g perdida ou um dígito faltando, é um erro.

Qual alfabeto Base58 esta página usa?
O alfabeto Bitcoin, que Solana, IPFS e a maioria dos outros projetos também usam. Para o alfabeto Flickr ou Ripple, vá para a página Base58, escolha o alfabeto lá e digite a entrada como bytes hex.