Idioma: Português

tools / base58

base58/

Converta texto ou hex de e para Base58 usando o alfabeto do Bitcoin. Cada byte 00 inicial vira um 1 inicial.

Entrada

Base58

Perguntas frequentes

Por que o Base58 não tem 0, O, I e l, e o que fazer se a decodificação disser que um caractere não está no alfabeto?

O Base58 deixa de fora o dígito 0, o O maiúsculo, o I maiúsculo e o l minúsculo porque é fácil confundi-los ao ler ou copiar à mão. Os 58 caracteres que restam são 1 a 9, A a Z sem I e O, e a a z sem l. Quando a decodificação encontra um caractere fora do alfabeto, a ferramenta informa qual é o caractere e onde ele está. Verifique se aspas, pontuação ou caracteres invisíveis entraram ao copiar; espaços e quebras de linha são ignorados automaticamente. Se a string realmente contém 0, O, I ou l, provavelmente não é Base58, e sim Base64, hex ou outra codificação.

A decodificação do Base58 diz que o resultado não é um texto UTF-8 válido. E agora?

Os bytes decodificados não são texto UTF-8. Chaves privadas, hashes de chaves públicas e endereços já são dados binários desde o início. Mude o formato de saída para hex para ver os bytes brutos. O texto é sempre tratado como UTF-8, então bytes escritos em GBK ou outra codificação não podem ser exibidos como texto aqui; use uma ferramenta que suporte essa codificação.

O que significa o 1 no início de um resultado Base58, e por que um 00 no início do hex vira 1?

O Base58 trata a sequência inteira de bytes como um único número inteiro grande e muda a base dele, então os bytes 00 iniciais sumiriam, já que não acrescentam nada ao valor. Por convenção, cada byte 00 inicial é escrito como um 1 inicial (o primeiro caractere do alfabeto). Por exemplo, o hex 0000010203 vira 11Ldp, e os dois 1 iniciais representam os dois bytes 00. Na decodificação, cada 1 inicial volta a ser um byte 00; uma entrada feita só de bytes 00 acaba como uma sequência de 1.

Dá para decodificar endereços Bitcoin? E o checksum do Base58Check?

Ele decodifica para bytes, mas não verifica nada. Os endereços Bitcoin usam Base58Check: um byte de versão, os dados e um checksum de 4 bytes, unidos e depois codificados em Base58. Esta ferramenta faz apenas Base58 simples, então a decodificação entrega os bytes brutos completos, sem verificar nem remover o checksum, e a codificação também não adiciona um. Por exemplo, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa decodifica (com saída em hex) para 25 bytes: 1 byte de versão 00, um hash de 20 bytes e um checksum de 4 bytes no final.

Qual é a diferença entre Base58 e Base64?

O Base64 usa 64 caracteres (incluindo + e /, com preenchimento = no final) e converte 3 bytes de cada vez, então é rápido e o tamanho da saída é previsível. O Base58 elimina os caracteres que se parecem, além de +, / e =, então um clique duplo seleciona a string inteira e copiar à mão tem menos chance de erro. O custo é que ele divide um único número inteiro grande, e por isso fica mais lento conforme a entrada cresce. É por isso que é usado principalmente em dados curtos, como endereços e chaves, de algumas dezenas de bytes. As duas saídas não são intercambiáveis.

Por que meu resultado é diferente do de outro site ou biblioteca?

Confira três pontos. Alfabeto: esta ferramenta usa o alfabeto do Bitcoin; o alfabeto do Flickr começa pelas minúsculas e o do Ripple usa outra ordem, então os resultados diferem. Entrada: o texto é codificado como UTF-8 exatamente como foi digitado, então uma quebra de linha ou um espaço a mais no final muda o resultado. Formato de entrada: se você está codificando bytes em hex, escolha hex; caso contrário, 0a1b é tratado como um texto de quatro caracteres. A entrada em hex pode usar espaços, dois-pontos, vírgulas ou prefixos 0x como separadores e precisa ter um número par de dígitos.

Existe limite de tamanho para a entrada do Base58?

Sim. A codificação aceita até 32768 bytes e a decodificação até 45000 caracteres; entradas maiores pedem que você as divida. A quantidade de trabalho do Base58 cresce com o quadrado do comprimento, e o limite evita que a página trave. Alguns KB ou menos ficam prontos praticamente na hora.

O que eu digito é enviado para algum servidor?

Não. A codificação e a decodificação são feitas no seu navegador e nada é enviado a um servidor.