search

Found

info Visão geral

Codifica bytes hex em Base58 / Base58Check do Bitcoin com 5 presets de byte de versão e decodifica Base58 em hex com veredicto de checksum SHA-256 duplo.

📘 Como usar

  1. Escolha a direção (Codificar / Decodificar) e o modo (Base58 puro ou Base58Check)
  2. Ao codificar em modo Base58Check, escolha um dos 5 bytes de versão pré-configurados
  3. Cole o hex ou a string Base58 no painel à esquerda e leia o resultado, a contagem de bytes e o veredicto do checksum à direita

Codificador e Decodificador Base58

Copiado!

※ Alfabeto Base58 estilo Bitcoin (58 caracteres): 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz — Exclui 0 (zero), O (O maiúsculo), I (i maiúsculo), l (L minúsculo) para evitar ambiguidade visual.

Article

Codificador e Decodificador Base58 | Confira endereços Bitcoin e Base58Check no navegador

Quando você precisa montar um endereço P2PKH do Bitcoin a partir de um hash em hex, conferir se a sua implementação de Base58Check bate com a oficial ou destrinchar uma chave Solana ou um CIDv0 do IPFS para olhar os bytes brutos — esta ferramenta codifica e decodifica Base58 estilo Bitcoin com cinco bytes de versão pré-configurados (P2PKH 0x00, P2SH 0x05, WIF 0x80, Testnet P2PKH 0x6f, Testnet P2SH 0xc4) e calcula o veredicto de checksum duplo SHA-256 dentro da aba, usando BigInt e Web Crypto.

💡 Sobre esta ferramenta

O alfabeto Base58 do Bitcoin foi desenhado para ser lido por humanos. Satoshi tirou quatro caracteres — 0, O maiúsculo, I maiúsculo e l minúsculo — porque eles se confundem em papel impresso, em leituras OCR de QR code borrado e em ditados ao telefone. Também ficaram de fora os símbolos +, / e =, então o resultado entra em URLs, argumentos de linha de comando e JSON sem precisar de escape.

Base58Check coloca por cima um byte de versão na frente e um checksum de quatro bytes (os primeiros quatro bytes de SHA256(SHA256(versão || payload))) para barrar um erro de digitação antes que ele chegue numa carteira ou num cliente RPC. O mesmo envelope reaparece em endereços Bitcoin mainnet e testnet, chaves privadas WIF (Wallet Import Format), chaves públicas do Solana (Base58 puro, sem checksum), CIDv0 do IPFS (Qm…) e nos antigos IDs de foto do Flickr.

A ferramenta separa os dois fluxos. O codificador recebe uma string hex de bytes, opcionalmente coloca o byte de versão na frente e produz a string Base58 / Base58Check canônica. O decodificador faz o caminho contrário: mostra o byte de versão separado, apresenta o payload em hex e em ASCII imprimível, e informa se o checksum confere com os bytes que você colou. Tudo roda com BigInt e crypto.subtle.digest('SHA-256', …), então o resultado é idêntico ao de python-base58, btcutil/base58, rust-bitcoin e bitcoinjs-lib.

Privacidade: o preset WIF (0x80) pode envolver chaves privadas. Os bytes colados não são enviados a servidor — todo o cálculo BigInt e SHA-256 acontece dentro da página.

🧐 Perguntas frequentes

Q. Qual a diferença para Base64? A. Base64 usa 64 caracteres (A-Z a-z 0-9 + / =); Base58 retira 0, O, I, l e a pontuação, sobrando 58. A saída fica cerca de 4 % maior que em Base64, mas é segura em URL, em copia-cola e em leitura oral.

Q. Como é calculado o checksum do Base58Check? A. Concatena-se o byte de versão com o payload, aplica-se SHA-256 duas vezes e pegam-se os quatro primeiros bytes do segundo hash. O decodificador refaz a conta nos bytes que acabou de extrair e compara os quatro bytes finais com os que recalculou. Qualquer bit alterado muda o checksum por completo, então quase todo erro de digitação cai antes de chegar ao destino.

Q. Dá para tratar Litecoin, Dogecoin, Solana ou IPFS CIDv0 aqui? A. As chaves do Solana e os CIDv0 do IPFS são Base58 puro — basta mudar para o modo "Base58 puro" e os bytes voltam diretos. Litecoin (0x30 P2PKH, 0x05/0x32 P2SH) e Dogecoin (0x1e) usam Base58Check, mas com bytes de versão que não estão nos presets; o caminho mais prático é montar versão + payload + double_sha256(versão + payload)[:4] no seu próprio script e colar o hex aqui no modo Base58 puro para comparar.

Q. O veredicto diz "checksum inválido". O que checar? A. Três causas comuns. Em algum ponto da string entrou um O no lugar de 0 ou um I no lugar de l — Base58 não define esses caracteres e o decodificador para antes do checksum. Um editor ou aplicativo de mensagem converteu aspas tipográficas ou caracteres de largura completa. A string é Base58 puro (Solana, IPFS CIDv0) e está sendo lida como Base58Check; troque o modo.

Q. Por que minha chave WIF decodificada tem 33 bytes em vez de 32? A. As chaves WIF "compressed" anexam um byte 0x01 no final para indicar que a chave pública correspondente é a forma comprimida. As WIF "uncompressed" entregam exatamente 32 bytes. Dá para distinguir os dois formatos olhando o comprimento do payload em hex.

📚 Curiosidades

O alfabeto Base58 começa em 1 e não em 0 de propósito. O codificador do Bitcoin transcreve cada byte zero de cabeçalho como um 1 literal — é por isso que endereços P2PKH mainnet (byte de versão 0x00) começam por 1, P2SH (0x05) por 3 e WIF uncompressed (0x80) por 5. WIF compressed começa por K ou L porque o byte extra 0x01 empurra a faixa numérica para além de 5….

O Flickr usava uma ordem própria de alfabeto Base58 (1…9 a-z A-Z sem as exclusões clássicas), então um link https://flic.kr/p/2nABcDef não decodifica direto contra o alfabeto do Bitcoin sem remapeamento manual. Solana, Stellar e IPFS adotaram a ordem do Bitcoin e por isso compartilham decodificadores sem conversões — a documentação histórica do go-ipfs chamava esse alfabeto literalmente de "btc".