Escolha o alfabeto de recepção
Comece com o formato exigido pelo sistema de recepção, não com o nome que parece mais compacto. Base64 usa letras, dígitos, mais e barra em sua forma padrão; alguns contextos especificam a variante Base64 segura de URL. Base32 usa letras maiúsculas e dígitos 2 até 7. O Base58 estilo Bitcoin exclui caracteres como zero, O maiúsculo, I maiúsculo e letras minúsculas l que são fáceis de confundir quando copiados à mão. Alfabetos diferentes podem representar os mesmos bytes, mas um receptor esperando um não reconhecerá automaticamente outro. Nenhum dos três criptografa uma mensagem. Seu propósito é a representação, então qualquer um com o decodificador certo pode recuperar os bytes originais.
Siga um pequeno exemplo
Tome o texto ASCII Man, cujos bytes UTF-8 são hexadecimais 4D 61 6E. O padrão Base64 escreve esses bytes como TWFu. O RFC 4648 Base32 escreve-os como JVQW4===, incluindo o preenchimento para completar seu bloco de oito caracteres. A ferramenta Base58 vinculada representa os mesmos bytes usando o alfabeto Bitcoin e nenhum preenchimento igual. Os resultados parecem diferentes porque os alfabetos dividem o fluxo de bits ou o valor inteiro de forma diferente; o texto não foi alterado. Digite Man no codificador Base32 incorporado e, em seguida, use seu decodificador correspondente. Tente as ferramentas Base64 e Base58 com exatamente a mesma entrada e compare as saídas somente após decodificá-las de volta para bytes.
- UTF-8: Man → 4D 61 6E
- Base64: TWFu · Base32: JVQW4===
- Base58: um alfabeto diferente; decodificar de volta para Man
Padding, variantes e checksum
As especificações Base64 e Base32 discutem o preenchimento com sinais de igual. Alguns aplicativos omitem deliberadamente o preenchimento, e um receptor pode exigir texto preenchido ou não preenchido; corresponda exatamente ao seu contrato. Nesta implementação, Base58 não usa preenchimento com sinais de igual. Também distinga a codificação Base58 simples do Bitcoin Base58Check: um endereço Bitcoin inclui informações de versão e uma soma de verificação antes de sua renderização Base58. O conversor MultiVerto Base58 codifica o texto UTF-8 e não constrói um endereço Bitcoin ou valida uma soma de verificação Base58Check. Da mesma forma, alterar o padrão Base64 para Base64URL altera os detalhes alfabéticos que importam nos URLs. Um token com a variante errada pode falhar mesmo que seus bytes subjacentes estejam corretos.
Verifique bytes antes de comparar strings
O texto primeiro se torna bytes sob uma codificação de caracteres. MultiVerto usa UTF-8 para suas ferramentas de texto Base32 e Base58, então uma letra com um acento pode ocupar mais de um byte. Conte bytes em vez de caracteres visíveis ao estimar o tamanho. Espaços em branco copiados para a fonte também podem alterar o resultado. Para diagnosticar uma incompatibilidade, registre o texto original, seus bytes UTF-8, o alfabeto nomeado, a política de preenchimento e o decodificador esperado. Decodificar a saída do candidato e comparar o texto reconstruído. Se o fluxo de trabalho real transportar arquivos binários arbitrários em vez de texto UTF-8, verifique se a ferramenta de recebimento preserva bytes brutos; um conversor de texto somente não é um protocolo geral de arquivo binário.
Use a representação dos nomes dos contratos
Para um campo MIME, token de API, payload QR ou identificador manuscrito, leia a especificação relevante antes de escolher um alfabeto. Base64 é comum em intercâmbio orientado a máquina; Base32 pode atender a alfabetos insensitivos a maiúsculas ou minúsculas ou restritos; Base58 está associado à transcrição humana em certos sistemas. São tendências, não garantias. Não suponha que a codificação adiciona integridade ou autenticidade: uma string pode ser alterada a menos que o formato circundante forneça um checksum, assinatura ou proteção autenticada. Mantenha um vetor de teste curto, como Man, com sua integração e verifique a codificação e a decodificação no limite onde os dados deixam seu aplicativo. A questão decisiva é se o receptor aceita os caracteres e regras exatos que você emite.