Codificador y decodificador Base32hex

Convierte texto, bytes en hexadecimal o archivos a Base32 con el alfabeto hexadecimal extendido y viceversa. Controla el relleno y el uso de mayúsculas o minúsculas, por ejemplo para generar etiquetas al estilo de NSEC3.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Elige Codificar para convertir texto en Base32hex o Decodificar para convertir Base32hex de nuevo en texto.
  2. Deja seleccionada la variante Base32hex. Desactiva el Relleno o activa Minúsculas si tu formato lo necesita.
  3. Escribe o pega la entrada, o abre un archivo. El resultado se actualiza mientras escribes.
  4. 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

Alfabeto0-9 A-V
Tamaño de salida8 caracteres por cada 5 bytes (160%)
RellenoCon = hasta un múltiplo de 8 caracteres
EstándarRFC 4648, sección 7
Distingue mayúsculas y minúsculasNo

Ejemplos

Entrada (UTF-8)Salida
Hello, World!91IMOR3F5GG5ERRIDHI22===
Base64.is89GN6P9M6GN6ISO=
你好SIUQ1PD5NK======

Preguntas frecuentes

¿Qué diferencia hay entre Base32 y Base32hex?
Ambas usan 5 bits por carácter y las mismas reglas de relleno. El Base32 estándar usa 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?
RFC 4648 rellena con = 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.
¿Una cadena Base32hex es lo mismo que hexadecimal?
No. Una cadena Base32hex que solo contenga 0-9 y A-F parece hexadecimal, pero cada carácter lleva 5 bits en lugar de 4. Para trabajar con hexadecimal normal, usa la herramienta Base16.