Cómo se usa
- Elige Codificar para convertir texto en Base32hex o Decodificar para convertir Base32hex de nuevo en texto.
- Deja seleccionada la variante Base32hex. Desactiva el Relleno o activa Minúsculas si tu formato lo necesita.
- Escribe o pega la entrada, o abre un archivo. El resultado se actualiza mientras escribes.
- Copia el resultado o descárgalo como archivo.
¿Qué es Base32hex?
Base32hex es la codificación "Base 32 Encoding with Extended Hex Alphabet" (Base 32 con alfabeto hexadecimal extendido), definida en la sección 7 de RFC 4648. Funciona exactamente igual que el Base32 estándar: cada carácter lleva 5 bits, cada 5 bytes se convierten en 8 caracteres y la salida se rellena con = hasta un múltiplo de 8. Solo cambia el alfabeto. En lugar de A-Z 2-7, Base32hex sigue contando donde termina el hexadecimal: los dígitos del 0 al 9 valen de 0 a 9, la A vale 10 y la V vale 31.
Como los dos alfabetos comparten la mayoría de sus caracteres, a menudo se puede pasar una cadena Base32hex a un decodificador Base32 estándar sin que dé error, pero los bytes resultantes son incorrectos. Decodifica siempre con la misma variante que se usó para codificar.
Se conserva el orden
El alfabeto está en orden ASCII ascendente y el valor de cada carácter crece con su posición. Por eso, comparar dos cadenas Base32hex carácter a carácter da el mismo orden que comparar los bytes subyacentes. RFC 4648 destaca esta propiedad, de la que carecen el Base32 estándar y Base64, y que convierte a Base32hex en una buena opción para las claves de almacenes ordenados, como bases de datos y almacenes clave-valor.
Escribe todas las cadenas en mayúsculas o todas en minúsculas, y desactiva el relleno cuando las entradas tengan longitudes distintas: el signo = se ordena entre los dígitos y las letras, y puede alterar el orden.
Base32hex en NSEC3 de DNSSEC
Los registros NSEC3, definidos en RFC 5155, demuestran que un nombre DNS no existe y, al mismo tiempo, dificultan enumerar todos los nombres de la zona. Cada nombre se procesa con SHA-1, y el hash de 20 bytes se escribe como una etiqueta Base32hex de 32 caracteres sin relleno, que normalmente se muestra en minúsculas. Como la codificación conserva el orden de los hashes, los nombres con hash forman una cadena ordenada. Para convertir un hash en una etiqueta de este tipo, pégalo como entrada hexadecimal, desactiva el Relleno y elige Minúsculas. Esta herramienta solo realiza el paso de codificación; no calcula el hash NSEC3 con sal e iteraciones.
Base32hex en 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)
Especificación
| Alfabeto | 0-9 A-V |
|---|---|
| Tamaño de salida | 8 caracteres por cada 5 bytes (160%) |
| Relleno | Con = hasta un múltiplo de 8 caracteres |
| Estándar | RFC 4648, sección 7 |
| Distingue mayúsculas y minúsculas | No |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Preguntas frecuentes
¿Qué diferencia hay entre Base32 y Base32hex?
A-Z 2-7; Base32hex usa 0-9 A-V, que conserva el orden de los datos. No son intercambiables.¿Base32hex distingue entre mayúsculas y minúsculas?
El alfabeto se define en mayúsculas, pero este decodificador también acepta minúsculas. Activa Minúsculas si necesitas la salida en minúsculas, por ejemplo para etiquetas DNS.
¿Debo usar relleno?
= hasta un múltiplo de 8 caracteres, pero muchos formatos, entre ellos NSEC3, lo omiten. El decodificador acepta ambas formas, así que elige lo que espere el sistema receptor.