Codificador Base58Check
Dados de endereço Bitcoin com 21 bytes viram 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM, 33 caracteres com um checksum duplo SHA-256 de quatro bytes, então um caractere copiado errado reprova na verificação em vez de virar bytes errados. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Modo de cálculo
- Encode
- Formato de saída
- Hex
- Resultado
- 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
- Base58Check
- 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
- Soma de verificação (hex)
- d61967f6
- Nome do alfabeto
- bitcoin
Diferente do Base58 simples, um único caractere alterado quase sempre faz a verificação do checksum falhar em vez de decodificar em silêncio bytes errados — crítico para endereços de carteira, chaves privadas WIF e qualquer string que pessoas copiam à mão.
Por que o Base58 simples precisa de um checksum
O Base58 transforma bytes em 58 caracteres difíceis de confundir, sem zero, O maiúsculo, I maiúsculo e l minúsculo. Isso deixa a sequência fácil de ler, mas não a protege: um caractere digitado errado vira simplesmente outra sequência válida, que decodifica em bytes diferentes. O Base58Check fecha essa brecha. Antes de codificar, ele aplica SHA-256 aos seus dados, aplica SHA-256 de novo ao resultado e acrescenta os quatro primeiros bytes desse segundo hash. A sequência inteira é então escrita com o alfabeto Base58 do Bitcoin. Esses quatro bytes extras deixam uma chance de cerca de uma em quatro bilhões de que um erro de um único caractere passe despercebido, e é por isso que endereços Bitcoin P2PKH, chaves privadas WIF e muitas chaves estendidas usam esse formato.
Como codificar, decodificar e evitar os deslizes comuns
Para codificar, informe os dados em hexadecimal, que é o padrão, ou mude para texto comum. O exemplo de 21 bytes 00010966776006953D5567439E5E39F86A0D273BEE vira 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM, 33 caracteres que já levam o checksum d61967f6. Para decodificar, cole uma sequência Base58Check: o checksum é recalculado e comparado com o guardado, e qualquer diferença interrompe o processo com uma mensagem clara. Os deslizes típicos são hexadecimal com número ímpar de dígitos, uma sequência copiada com um caractere a mais ou a menos e esperar que a ferramenta diga a qual rede ou tipo de endereço a sequência pertence. Ela confere apenas a integridade e não interpreta os bytes de versão.
O que o Base58Check acrescenta ao Base58
Essa codificação é amigável a humanos, mas não protege a integridade: um glifo digitado errado vira outra string válida que decodifica para bytes diferentes. O Base58Check fecha essa lacuna. Quatro bytes de checksum dão na prática cerca de uma em quatro bilhões de chance de um erro de um caractere passar despercebido, por isso endereços P2PKH do Bitcoin, muitas chaves estendidas e ferramentas relacionadas padronizam essa construção.
Esta landing atende quem busca um codificador Base58Check, um decodificador Base58Check ou um conversor de checksum Bitcoin online; não é Base58 simples sem checksum, não é Base64 e não é um classificador completo de tipos de endereço que interpreta bytes de versão em cada rede.
Casos de uso
Integridade de copiar e colar em ferramentas de operações
Codifique rótulos binários versionados para que a equipe cole strings que falhem de forma fechada em erros de digitação em vez de decodificar bytes errados em silêncio.
Perguntas frequentes
Qual é a diferença entre Base58 e Base58Check?
Base58 apenas mapeia bytes para o alfabeto Bitcoin.
Qual alfabeto esta ferramenta Base58Check usa?
O alfabeto Bitcoin: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. Exclui 0, O, I e l.
O codificador Base58Check é gratuito?
A ferramenta do navegador é gratuita e roda localmente.
O que acontece se o checksum não bater na decodificação?
O decodificador recalcula o checksum duplo SHA-256 a partir dos dados e compara com os quatro bytes guardados na sequência. Se forem diferentes, ele para com uma mensagem clara em vez de entregar bytes que provavelmente estão errados.
Devo digitar os dados em hexadecimal ou como texto comum?
Hexadecimal é o padrão e exige uma quantidade par de dígitos hexadecimais, como no exemplo de 21 bytes desta página. Escolha texto comum para proteger palavras em UTF-8; na decodificação, a mesma opção define como os dados recuperados aparecem.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/base58-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"00010966776006953D5567439E5E39F86A0D273BEE"}'const res = await fetch("https://api.kit.forhosting.com/enc/base58-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "00010966776006953D5567439E5E39F86A0D273BEE"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base58-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "00010966776006953D5567439E5E39F86A0D273BEE"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base58-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"00010966776006953D5567439E5E39F86A0D273BEE"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"00010966776006953D5567439E5E39F86A0D273BEE"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base58-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "00010966776006953D5567439E5E39F86A0D273BEE"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base58_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Base58Check é o formato binário para texto do Bitcoin que envolve um payload com um checksum de quatro bytes derivado de SHA-256 duplo e depois codifica a sequência completa com o alfabeto Base58 do Bitcoin. Este codificador Base58Check aceita um payload em hex ou UTF-8 e devolve uma string Base58Check; o decodificador inverte o mapa, recalcula SHA256(SHA256(payload)) e reporta um erro invalid_input claro quando o checksum armazenado não coincide. O caminho é aritmética determinística pura — sem rede, sem sementes aleatórias e sem dependência de relógio — de modo que o executor gratuito do navegador e a API pré-paga devolvem o mesmo JSON sempre.
O que o Base58Check acrescenta ao Base58
O Base58 simples mapeia bytes para cinquenta e oito caracteres inequívocos tratando o payload como um inteiro big-endian e dividindo repetidamente por cinquenta e oito, com o alfabeto Bitcoin que remove o zero, o O maiúsculo, o I maiúsculo e o L minúsculo. Antes de codificar, o codificador calcula o SHA-256 do payload, depois o SHA-256 desse resumo, e anexa os primeiros quatro bytes do hash externo como checksum. O buffer combinado — payload original mais esses quatro bytes — é então codificado em Base58 exatamente como o Base58 bruto, inclusive a convenção de zeros iniciais para uns iniciais. Na decodificação, o processo inverte: a decodificação Base58 produz bytes; os últimos quatro são o checksum reivindicado; o SHA-256 duplo do payload restante deve igualar esses quatro bytes ou a operação falha.
Como chamar a API e o que a resposta contém
Com format utf8, text é codificado como bytes UTF-8 antes do checksum. Envie um corpo JSON com um campo de string obrigatório text (aliases input, value, data e payload), um mode opcional encode ou decode (padrão encode) e um format opcional hex ou utf8 (padrão hex). Espaços no hex são removidos; comprimento ímpar ou dígitos não hex devolvem invalid_input. O mode decode trata text como uma string Base58Check no alfabeto Bitcoin, verifica o checksum de SHA-256 duplo e devolve o payload em hex minúsculo quando format é hex, ou como string UTF-8 quando format é utf8 (payloads binários que não são UTF-8 válido devem usar hex). Em encode bem-sucedido a resposta inclui mode, format, input, result e base58check com a mesma string codificada, payload_hex, checksum_hex, a constante alphabet e alphabet_name bitcoin, payload_bytes, output_length e uma mensagem curta em inglês. Em decode bem-sucedido você também obtém checksum_valid true, input_length e uma mensagem confirmando a verificação. Validação falha — text ausente, hex inválido, mode ou format desconhecido, caracteres Base58 inválidos, payloads curtos demais para o checksum ou mismatch de checksum — devolve invalid_input e nunca é cobrada. O preço é uma tarifa fixa de US$ 0,002 por requisição bem-sucedida com unidade item.
Dicas práticas, vetores clássicos e diferenças do Base58 simples
Use o Base58 simples irmão quando só precisar de conversão de alfabeto sem checksums; use esta capacidade Base58Check quando a integridade importar. Prefira encode quando você tiver um hash com prefixo de versão ou outro payload binário em hex e precisar de uma string segura para colar com integridade; prefira decode quando já tiver uma string tipo endereço Base58Check e precisar recuperar o payload só se o checksum estiver intacto. Testes de fumaça de ida e volta são diretos: codifique o payload hex conhecido 00010966776006953D5567439E5E39F86A0D273BEE, confirme o resultado 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM, decodifique essa string e confirme payload_hex e checksum_hex d61967f6. Altere de propósito o último caractere de uma string válida e afirme que o cliente trata invalid_input com uma mensagem que nomeia os checksums de quatro bytes recebido e esperado. Mantenha requisições abaixo do limite de caracteres publicado; payloads extremamente longos expandem como inteiros grandes e é melhor dividi-los offline. Tarefas falhas que devolvem invalid_input não consomem saldo pré-pago, o que mantém scripts exploratórios baratos ao testar checksums ruins. Ao ensinar, mostre o mesmo payload codificado com e sem checksum para que alunos vejam por que strings no estilo Bitcoin são mais longas e por que um erro de um caractere quase sempre falha de forma fechada em vez de abrir a carteira errada.
Casos de integração
Testes de fixtures de carteira e endereços
Monte fixtures de CI a partir de payloads hex conhecidos, afirme que o encode Base58Check bate com strings golden e rejeite endereços adulterados por mismatch de checksum.
Ensino de checksums de SHA-256 duplo
Em sala, codifique um vetor clássico do Bitcoin, inspecione checksum_hex e altere um caractere para demonstrar invalid_input.
Perguntas técnicas
O que acontece se o checksum não coincidir?
O decode devolve invalid_input com uma mensagem que inclui os checksums de quatro bytes recebido e esperado em hex. Tarefas falhas não são cobradas.
O payload deve ser hex ou texto simples?
O format padrão é hex (dígitos hexadecimais de comprimento par), alinhado às ferramentas Bitcoin. Defina format como utf8 só quando o payload for texto UTF-8 genuíno.