Codificador e decodificador Base58

Converta texto, bytes em hex ou arquivos pequenos em Base58 e vice-versa. Escolha o alfabeto Bitcoin, Flickr ou Ripple e, se quiser, adicione ou verifique uma soma de verificação Base58Check.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para transformar texto ou bytes em Base58, ou Decodificar para transformar uma string Base58 de volta em dados.
  2. Escolha o Alfabeto. Bitcoin é o padrão e também é o usado pelo IPFS e pela Solana.
  3. Digite ou cole a entrada. Mude a entrada para Hex se você tiver bytes brutos, como um hash ou uma chave pública.
  4. Ative a Soma de verificação Base58Check somente se a string tiver uma soma de verificação de 4 bytes e depois copie ou baixe o resultado.

O que é Base58?

Base58 é uma codificação de binário para texto criada para o Bitcoin. Seu alfabeto é formado pelos 62 dígitos e letras latinas, menos quatro caracteres fáceis de confundir: 0 (zero), O (o maiúsculo), I (i maiúsculo) e l (L minúsculo). Ele também não tem +, / nem =, então uma string Base58 pode ser selecionada com um clique duplo e colocada em uma URL sem escape.

Ao contrário do Base64, o Base58 não divide a entrada em grupos de bits. A entrada inteira é tratada como um único número grande e escrita na base 58, por isso não há preenchimento e a mudança de um único byte pode alterar muitos caracteres da saída. Bytes zero à esquerda não têm valor numérico, então cada um deles é escrito como o primeiro caractere do alfabeto (1 no alfabeto Bitcoin) para ser preservado. A saída tem cerca de 1,37 vez o tamanho da entrada.

Onde o Base58 é usado

  • Bitcoin. Endereços legados e chaves privadas WIF usam Base58Check: Base58 com um byte de versão e uma soma de verificação.
  • IPFS. Um identificador de conteúdo da versão 0 (CIDv0) é a forma Base58 de um multihash SHA-256, e é por isso que esses CIDs têm 46 caracteres e começam com Qm.
  • Solana. Chaves públicas, endereços de conta e assinaturas de transação são escritos em Base58 simples, sem soma de verificação. Uma chave de 32 bytes normalmente vira 43 ou 44 caracteres.
  • Flickr e XRP Ledger. Os links curtos do Flickr usam o alfabeto Flickr, e os endereços XRP usam o alfabeto Ripple, motivo pelo qual começam com r.

Para converter entre Base58 e bytes brutos, use Base58 para Hex e Hex para Base58. Para identificadores que só precisam ser alfanuméricos, compare com o Base62.

Alfabetos Base58

AlfabetoCaracteres, em ordem
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

Os três usam os mesmos 58 caracteres em ordens diferentes, então uma string codificada com um alfabeto é decodificada em outros bytes, ou falha, quando se usa outro.

Base58 no código

# Python (pip install base58)
import base58
base58.b58encode(b'hello')      # b'Cn8eVZg'
base58.b58decode('Cn8eVZg')     # b'hello'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));

Especificação

Alfabeto1-9 A-Z a-z sem 0 O I l
Tamanho da saídaCerca de 137% (conversão de número grande)
PreenchimentoNenhum (bytes zero iniciais viram 1)
PadrãoBitcoin Base58
Diferencia maiúsculas e minúsculasSim

Exemplos

Entrada (UTF-8)Saída
Hello, World!72k1xXWG59fYdzSNoA
Base64.isr1Nm3AS7ZcnN
你好2xuZUfBKa

Perguntas frequentes

Por que os bytes zero à esquerda viram 1?
O Base58 converte a entrada em um único número, e bytes zero à esquerda não alteram o seu valor. Para preservá-los, cada byte zero à esquerda é escrito como o primeiro caractere do alfabeto, que é 1 no alfabeto Bitcoin. É por isso que 32 bytes zero são codificados como uma sequência de 32 uns.
O Base58 diferencia maiúsculas de minúsculas?

Sim. Letras maiúsculas e minúsculas são dígitos diferentes, então mudar a caixa de um único caractere altera os bytes decodificados ou torna a string inválida.

Qual é a diferença entre Base58 e Base58Check?
O Base58Check acrescenta uma soma de verificação de 4 bytes (o início de um hash SHA-256 duplo) antes de codificar, para que erros de digitação possam ser detectados. Ative a opção Soma de verificação Base58Check aqui ou consulte a página Base58Check para mais detalhes.
Por que a entrada é limitada a cerca de 20 KB?
Como a entrada inteira é um único número grande, o trabalho cresce com o quadrado do seu comprimento. O Base58 foi feito para chaves, hashes e endereços, não para arquivos. Para dados grandes, use Base64 ou Base85.