Codificador y decodificador Crockford Base32

Convierte texto, bytes en hexadecimal o archivos al Base32 de Douglas Crockford y viceversa. El decodificador perdona los errores de escritura: ignora mayúsculas y guiones, y lee la O como 0 y la I o la L como 1.

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

Cómo se usa

  1. Elige Codificar para convertir texto en Crockford Base32 o Decodificar para convertirlo de nuevo en texto.
  2. Deja seleccionada la variante Crockford y comprueba que el Relleno esté desactivado. Activa Minúsculas para obtener la salida en minúsculas.
  3. Escribe o pega la entrada, o abre un archivo. Al decodificar, se ignoran los guiones y los espacios.
  4. Copia el resultado o descárgalo como archivo.

¿Qué es Crockford Base32?

Douglas Crockford diseñó este alfabeto Base32 para identificadores que las personas leen, escriben y dicen en voz alta. Usa los diez dígitos y 22 letras mayúsculas: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Las letras I y L se omiten porque se parecen al dígito 1, la O porque se parece al 0, y la U para reducir la probabilidad de formar palabras obscenas por accidente.

Cada símbolo lleva 5 bits, así que 5 bytes se convierten en 8 caracteres, igual que en Base32 RFC 4648. Los símbolos están en orden ASCII ascendente, de modo que las cadenas sin relleno escritas todas en mayúsculas o todas en minúsculas se ordenan igual que los datos que codifican. La especificación de Crockford no usa relleno, así que mantén desactivada la opción Relleno.

Decodificación tolerante

La especificación de Crockford pide a los decodificadores que acepten lo que la gente escribe en realidad, y esta herramienta lo hace:

  • Las mayúsculas y las minúsculas se tratan igual.
  • La letra O se lee como el dígito 0, y las letras I y L se leen como 1.
  • Los guiones, que pueden insertarse para que los códigos largos sean más fáciles de leer, se ignoran, al igual que los espacios y los saltos de línea.

La letra U no es válida y se indica junto con su posición.

Bytes, números y ULID

Crockford describe su codificación en términos de números, mientras que esta herramienta codifica una secuencia de bytes en grupos de 5 bits, al estilo de RFC 4648, con los símbolos de Crockford. Cuando el número de bits no es múltiplo de 5, las implementaciones basadas en números colocan los bits cero sobrantes al principio y esta herramienta los coloca al final, así que los resultados pueden diferir.

ULID es un ejemplo habitual. Usa el alfabeto de Crockford, pero codifica su valor de 128 bits como un número de 26 caracteres, así que los 16 bytes de un ULID no dan aquí la misma cadena, y al decodificar un ULID se obtienen bytes desplazados dos bits. El símbolo de control opcional de la especificación de Crockford, un carácter adicional con el valor módulo 37, no es compatible: esta herramienta no lo añade ni lo verifica.

Especificación

Alfabeto0-9 A-Z sin I L O U
Tamaño de salida8 caracteres por cada 5 bytes (160%)
RellenoNinguno
EstándarCrockford Base32 (2002)
Distingue mayúsculas y minúsculasNo

Ejemplos

Entrada (UTF-8)Salida
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Preguntas frecuentes

¿Crockford Base32 distingue entre mayúsculas y minúsculas?

No. La salida está en mayúsculas de forma predeterminada, y la opción Minúsculas la cambia a minúsculas. El decodificador acepta ambas, incluso mezcladas en una misma cadena.

¿Por qué faltan la I, la L, la O y la U en el alfabeto?

La I y la L se confunden fácilmente con el 1, y la O con el 0, así que se omiten y, al decodificar, se leen como esos dígitos. La U se excluye para que los códigos aleatorios tengan menos probabilidades de formar palabras ofensivas en inglés.

¿Esta herramienta admite el símbolo de control de Crockford?
No. La especificación permite un carácter adicional opcional con una suma de verificación módulo 37, que usa los símbolos adicionales * ~ $ = U. Esta herramienta no lo añade ni lo verifica, así que quita el símbolo de control antes de decodificar.
¿Puedo decodificar un ULID aquí?

No en sus 16 bytes exactos. ULID codifica sus 128 bits como un único número con los bits sobrantes al principio, mientras que esta herramienta trabaja con grupos de bytes y los coloca al final. Usa una biblioteca de ULID para leer la marca de tiempo y la parte aleatoria.