Idioma: Português

tools / base32

base32/

Converta texto de e para Base32, no padrão RFC 4648 ou em Base32Hex. O texto é codificado em UTF-8, e a decodificação aceita minúsculas, espaços e = ausente.

Texto simples

Base32

Perguntas frequentes

O que é Base32 e qual é a diferença para o Base64?

O Base32 escreve cada 5 bytes como 8 caracteres de um alfabeto de apenas 32 (A-Z e 2-7 na forma padrão), então a saída fica cerca de 60% maior que a entrada, enquanto o Base64 acrescenta só cerca de um terço. Em troca, não diferencia maiúsculas de minúsculas e não tem os dígitos 0, 1, 8 e 9, por isso é difícil confundir com as letras O, I e B. Isso serve para copiar à mão, ler em voz alta e lugares que ignoram maiúsculas e minúsculas, como chaves 2FA e nomes de arquivo.

Devo escolher Base32 padrão ou Base32Hex?

O Base32 que você encontra no dia a dia, incluindo chaves 2FA e a saída padrão da maioria das bibliotecas, é a variante padrão (RFC 4648, seção 6, alfabeto A-Z e 2-7). O Base32Hex (seção 7, alfabeto 0-9 e A-V) mantém a ordem de classificação do texto codificado igual à dos bytes originais, e é por isso que o NSEC3 do DNSSEC o usa. Um não decodifica o outro: a escolha errada costuma dar o erro "não é um caractere Base32" e, às vezes, apenas produz lixo.

A chave do 2FA é Base32? Como vejo o que há dentro dela?

Sim. O secret do TOTP (o parâmetro secret do link otpauth:// em um QR code, ou a chave que você digita à mão) normalmente é Base32 padrão, em geral em maiúsculas e sem =, e às vezes exibido em grupos de 4 caracteres separados por espaços; a decodificação aqui aceita tudo isso. O resultado são bytes aleatórios, e não texto, então marque "Mostrar resultado em hex" para vê-lo. Por exemplo, JBSWY3DPEHPK3PXP é 48 65 6c 6c 6f 21 de ad be ef. Para gerar códigos de uso único, use a ferramenta de 2FA deste site.

O que fazer com "Comprimento inválido", "não é um caractere Base32" ou "= só pode aparecer no final"?

"Comprimento inválido" significa que, depois de remover o =, a quantidade de caracteres deixa resto 1, 3 ou 6 na divisão por 8; um Base32 válido só deixa 0, 2, 4, 5 ou 7, então o mais provável é que tenham faltado caracteres ao copiar. "Não é um caractere Base32" aponta a posição do caractere: a variante padrão não tem 0, 1, 8 nem 9, nem pontuação ou caracteres de largura total; se o conteúdo tiver 0-9 e A-V, pode ser Base32Hex, então troque a variante. "= só pode aparecer no final" significa que há mais conteúdo depois de um =, talvez várias strings coladas juntas, que você precisa decodificar separadamente. Espaços, quebras de linha, letras minúsculas e = ausente nunca causam erro.

O que é o = no final e posso removê-lo?

O = completa o comprimento até um múltiplo de 8 e não faz parte dos dados. A decodificação funciona com ou sem ele; ao codificar, "Adicionar preenchimento =" vem marcado por padrão, então desmarque se não precisar. Se dá para omiti-lo depende de quem recebe: o formato de link otpauth do Google Authenticator diz que o secret não precisa de preenchimento, e ele geralmente é omitido, enquanto o base64.b32decode do Python o exige e gera Incorrect padding sem ele.

O resultado decodificado sai embaralhado, ou aparece que os dados não são UTF-8 válido. O que fazer?

Significa que os bytes decodificados não são texto UTF-8. Chaves 2FA, hashes e dados criptografados já são binários desde o início; marque "Mostrar resultado em hex" para ver os bytes brutos. Esta ferramenta só exibe texto como UTF-8. Se o texto original usava GBK ou outra codificação, marque o hex primeiro, depois use a ferramenta de texto / hex deste site e escolha GBK para transformar os bytes de volta em texto.

O resultado codificado é diferente do que o Python ou outra linguagem calcula. Por quê?

Confira três pontos. Primeiro, se a entrada termina com uma quebra de linha ou um espaço a mais: esta ferramenta codifica exatamente o que foi digitado, como UTF-8, e não remove espaços das pontas. Segundo, se a variante é a mesma: no Python, a forma padrão é base64.b32encode e o Base32Hex é base64.b32hexencode (disponível desde a versão 3.10). Terceiro, se o preenchimento com = está ativado. Variantes com outro alfabeto, como Crockford e z-base-32, não são suportadas e não vão coincidir.

O que eu digito é enviado para algum servidor?

Não. A codificação e a decodificação são feitas no seu navegador, sem fazer nenhuma requisição de rede e sem salvar nada; uma chave 2FA nunca sai do seu navegador.