Como usar
- Digite o seu alfabeto ou escolha uma Predefinição e edite-a. Cada caractere só pode aparecer uma vez.
- Escolha o Método: Número grande para qualquer tamanho de alfabeto ou Grupos de bits para alfabetos de 2, 4, 8, 16, 32 ou 64 caracteres.
- Com Grupos de bits, você pode informar um Caractere de preenchimento que não faça parte do alfabeto.
- Codifique o seu texto ou cole uma string escrita no seu alfabeto para decodificá-la.
Duas formas de mapear bytes em caracteres
Número grande funciona como o Base58. A entrada inteira é lida como um único número inteiro grande e dividida repetidas vezes pelo tamanho do alfabeto; cada resto escolhe um caractere. Funciona com qualquer alfabeto de pelo menos 2 caracteres, como 10, 36, 58 ou 62. Os bytes zero iniciais são escritos como o primeiro caractere do alfabeto, então sobrevivem a uma ida e volta. Não há preenchimento, e a entrada é limitada a cerca de 20 KB porque a aritmética fica lenta com dados longos.
Grupos de bits funcionam como na RFC 4648. A entrada é cortada em blocos com um número fixo de bits: 1 bit para um alfabeto de 2 caracteres, 4 bits para 16, 5 bits para 32 e 6 bits para 64. Cada bloco é um índice no alfabeto. É exatamente assim que hex, Base32 e Base64 funcionam, e o tamanho da saída depende apenas do tamanho da entrada.
Por que os dois métodos dão resultados diferentes
Um método codifica o valor numérico dos dados; o outro, os bits posição por posição. Os resultados geralmente são diferentes, e uma string precisa ser decodificada com o mesmo método que a gerou.
| Alfabeto | Entrada | Grupos de bits | Número grande |
|---|---|---|---|
| Base64 padrão | Hi | SGk= | Ehp |
| Base32 da RFC 4648 | Hi | JBUQ==== | SDJ |
01 | A | 01000001 | 1000001 |
0123456789 | Hi | indisponível | 18537 |
Com Grupos de bits e = como preenchimento, os alfabetos padrão reproduzem o Base64 e o Base32 normais. Número grande descarta o bit zero inicial de A porque escreve um valor, e não um número fixo de bits. Com os dez dígitos como alfabeto, ele simplesmente mostra os bytes de Hi como um número decimal.
O caractere de preenchimento só se aplica a Grupos de bits. A saída é preenchida até um múltiplo de 4 caracteres para alfabetos de 64 caracteres e até um múltiplo de 8 para alfabetos de 32 e 8 caracteres. Com 2, 4 ou 16 caracteres, cada byte ocupa caracteres inteiros, então o preenchimento nunca é necessário.
Regras para um alfabeto válido
- Pelo menos dois caracteres.
- Sem repetições. O decodificador mapeia cada caractere de volta para exatamente um valor. Se
arepresentasse tanto 0 quanto 10, uma string que o contivesse não poderia ser decodificada. - Maiúsculas e minúsculas fazem diferença.
aeAsão caracteres diferentes. - O caractere de preenchimento não pode estar no alfabeto, senão não seria possível distingui-lo dos dados.
Tudo é executado no seu navegador, então o seu alfabeto e os seus dados ficam no seu dispositivo.
Quando um alfabeto personalizado ajuda
- IDs ofuscados. Um alfabeto embaralhado transforma identificadores em tokens sem um padrão óbvio. Isso esconde, mas não protege: qualquer pessoa que conheça o alfabeto consegue decodificá-los.
- Formatos proprietários ou legados. Copie o alfabeto próprio de um sistema a partir da documentação dele e decodifique os dados diretamente.
- Aprendizado. Compare tamanhos de alfabeto e os dois métodos para entender como funciona a conversão de base. Para alfabetos fixos, veja Base58 e Base62.
Perguntas frequentes
Qual é a diferença entre Número grande e Grupos de bits?
Número grande converte a entrada inteira, como um único número inteiro, para a nova base, como o Base58, e funciona com qualquer tamanho de alfabeto. Grupos de bits divide a entrada em blocos de bits de tamanho fixo, como o Base64, e exige um alfabeto de 2, 4, 8, 16, 32 ou 64 caracteres.
Por que o meu alfabeto Base64 personalizado não gera a mesma saída do Base64 padrão?
O Base64 padrão usa grupos de bits. Escolha o método Grupos de bits e defina = como Caractere de preenchimento para obter o mesmo resultado. O método Número grande gera uma string completamente diferente a partir do mesmo alfabeto.
Por que caracteres repetidos não são permitidos?
Cada caractere precisa ser decodificado para exatamente um valor. Um caractere repetido teria dois significados, e os dados originais não poderiam ser recuperados com segurança.
Posso usar um caractere de preenchimento com o método Número grande?
Não. A saída de Número grande não tem tamanho de bloco fixo, então não há nada a preencher. A opção de preenchimento só se aplica a Grupos de bits.
Um alfabeto personalizado é uma forma de criptografia?
Não. Continua sendo uma codificação sem chave. Um alfabeto embaralhado pode tornar os dados mais difíceis de reconhecer à primeira vista, mas nunca deve ser usado para proteger segredos.