Como usar
- Escolha Codificar para transformar texto em Base32hex ou Decodificar para transformar Base32hex de volta em texto.
- Mantenha a Variante Base32hex selecionada. Desative o Preenchimento ou mude para Minúsculas se o seu formato exigir.
- Digite ou cole a entrada, ou abra um arquivo. O resultado é atualizado enquanto você digita.
- Copie o resultado ou baixe-o como arquivo.
O que é Base32hex?
O Base32hex é o "Base 32 Encoding with Extended Hex Alphabet" (codificação Base32 com alfabeto hexadecimal estendido) definido na seção 7 da RFC 4648. Ele funciona exatamente como o Base32 padrão: cada caractere carrega 5 bits, cada 5 bytes viram 8 caracteres e a saída é completada com = até um múltiplo de 8. Só o alfabeto muda. Em vez de A-Z 2-7, o Base32hex continua a contagem de onde o hexadecimal para: os dígitos de 0 a 9 valem de 0 a 9, A vale 10 e V vale 31.
Como os dois alfabetos compartilham a maior parte dos caracteres, uma string Base32hex muitas vezes passa por um decodificador Base32 padrão sem erro, mas os bytes resultantes estão errados. Sempre decodifique com a mesma variante usada na codificação.
A ordenação é preservada
O alfabeto está em ordem ASCII crescente, e o valor de cada caractere cresce com a sua posição. Por isso, comparar duas strings Base32hex caractere por caractere dá a mesma ordem que comparar os bytes de origem. A RFC 4648 destaca essa propriedade, que falta ao Base32 padrão e ao Base64, e ela torna o Base32hex uma boa escolha para chaves em armazenamentos ordenados, como bancos de dados e armazenamentos chave-valor.
Mantenha todas as strings na mesma caixa de letras e desative o preenchimento quando as entradas tiverem comprimentos diferentes: o sinal = fica entre os dígitos e as letras na ordenação e pode quebrar a ordem.
Base32hex no DNSSEC NSEC3
Os registros NSEC3, definidos na RFC 5155, provam que um nome DNS não existe e, ao mesmo tempo, dificultam listar todos os nomes da zona. Cada nome passa por um hash SHA-1, e o hash de 20 bytes é escrito como um rótulo Base32hex de 32 caracteres sem preenchimento, geralmente exibido em minúsculas. Como a codificação mantém a ordem dos hashes, os nomes com hash formam uma cadeia ordenada. Para transformar um hash em um rótulo desses, cole-o como entrada hex, desative o Preenchimento e escolha Minúsculas. Esta ferramenta realiza apenas a etapa de codificação; ela não calcula o hash NSEC3 com salt e iterações.
Base32hex no código
# Python 3.10+
import base64
base64.b32hexencode(b'foobar') # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'
// Go (import "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)
Especificação
| Alfabeto | 0-9 A-V |
|---|---|
| Tamanho da saída | 8 caracteres a cada 5 bytes (160%) |
| Preenchimento | Com = até um múltiplo de 8 caracteres |
| Padrão | RFC 4648, seção 7 |
| Diferencia maiúsculas e minúsculas | Não |
Exemplos
| Entrada (UTF-8) | Saída |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Perguntas frequentes
Qual é a diferença entre Base32 e Base32hex?
A-Z 2-7; o Base32hex usa 0-9 A-V, o que preserva a ordenação dos dados. Os dois não são intercambiáveis.O Base32hex diferencia maiúsculas de minúsculas?
O alfabeto é definido em maiúsculas, mas este decodificador também aceita entrada em minúsculas. Ative Minúsculas se você precisar de saída em minúsculas, por exemplo para rótulos DNS.
Devo usar preenchimento?
= até um múltiplo de 8 caracteres, mas muitos formatos, incluindo o NSEC3, o omitem. O decodificador aceita as duas formas, então escolha o que o sistema de destino espera.