Idioma: Español

tools / base32

base32/

Convierte texto a Base32 y de Base32 a texto, en RFC 4648 estándar o Base32Hex. El texto se codifica como UTF-8 y al decodificar se aceptan minúsculas, espacios y la falta de =.

Texto plano

Base32

Preguntas frecuentes

¿Qué es Base32 y en qué se diferencia de Base64?

Base32 escribe cada 5 bytes como 8 caracteres de un alfabeto de solo 32 (A-Z y 2-7 en la forma estándar), así que el resultado es un 60% más largo que la entrada, mientras que Base64 añade solo un tercio aproximadamente. A cambio no distingue mayúsculas de minúsculas y no tiene los dígitos 0, 1, 8 ni 9, por lo que es difícil confundirlo con las letras O, I y B. Eso lo hace adecuado para copiar a mano, dictar en voz alta y lugares donde no importan las mayúsculas, como las claves 2FA y los nombres de archivo.

¿Debo elegir Base32 estándar o Base32Hex?

El Base32 que te encuentras en el día a día, incluidas las claves 2FA y la salida por defecto de la mayoría de las bibliotecas, es la variante estándar (RFC 4648, sección 6, alfabeto A-Z y 2-7). Base32Hex (sección 7, alfabeto 0-9 y A-V) hace que el orden del texto codificado coincida con el orden de los bytes originales, por eso lo usa NSEC3 de DNSSEC. No se pueden decodificar entre sí: elegir mal suele dar el error «no es un carácter Base32» y a veces solo produce basura.

¿La clave de 2FA es Base32 y cómo veo lo que contiene?

Sí. Un secret de TOTP (el parámetro secret del enlace otpauth:// de un código QR, o la clave que escribes a mano) suele ser Base32 estándar, normalmente en mayúsculas y sin =, y a veces se muestra en grupos de 4 caracteres separados por espacios; aquí la decodificación acepta todo eso. El resultado son bytes aleatorios y no texto, así que marca «Mostrar resultado en hex» para verlo. Por ejemplo, JBSWY3DPEHPK3PXP es 48 65 6c 6c 6f 21 de ad be ef. Para generar códigos de un solo uso, usa la herramienta 2FA de este sitio.

¿Qué hago ante «Longitud no válida», «no es un carácter Base32» o «= solo puede aparecer al final»?

«Longitud no válida» significa que, sin los =, el número de caracteres deja un resto de 1, 3 o 6 al dividir entre 8; un Base32 válido solo deja 0, 2, 4, 5 o 7, así que lo más probable es que se perdieran caracteres al copiar. «No es un carácter Base32» indica la posición del carácter: la variante estándar no tiene 0, 1, 8 ni 9, ni signos de puntuación ni caracteres de ancho completo; si el contenido tiene 0-9 y A-V, puede ser Base32Hex, así que cambia la variante. «= solo puede aparecer al final» significa que hay más contenido después de un =, quizá varias cadenas pegadas juntas, que tienes que decodificar por separado. Los espacios, los saltos de línea, las letras minúsculas y la falta de = nunca dan error.

¿Qué es el = del final y puedo quitarlo?

Los = rellenan la longitud hasta un múltiplo de 8 y no forman parte de los datos. Al decodificar funciona con ellos o sin ellos; al codificar, «Añadir relleno =» viene marcado por defecto, así que desmárcalo si no lo necesitas. Si puedes omitirlo depende del receptor: el formato de enlace otpauth de Google Authenticator indica que el secret no necesita relleno y por lo general se omite, mientras que base64.b32decode de Python lo exige y da Incorrect padding si falta.

El resultado decodificado es ilegible o dice que no es UTF-8 válido. ¿Qué hago?

Significa que los bytes decodificados no son texto UTF-8. Las claves 2FA, los hashes y los datos cifrados son binarios desde el principio; marca «Mostrar resultado en hex» para ver los bytes en bruto. Esta herramienta solo muestra texto como UTF-8. Si el texto original usaba GBK u otra codificación, marca primero hex, abre la herramienta de texto / hexadecimal de este sitio y elige GBK para convertir los bytes de nuevo en texto.

El resultado codificado es distinto del de Python u otro lenguaje. ¿Por qué?

Comprueba tres cosas. Primero, si la entrada termina con un salto de línea o un espacio de más: esta herramienta la codifica en UTF-8 exactamente como está escrita y no recorta nada. Segundo, si la variante coincide: en Python la forma estándar es base64.b32encode y Base32Hex es base64.b32hexencode (disponible desde la versión 3.10). Tercero, si el relleno con = está activado. Las variantes con otro alfabeto, como Crockford y z-base-32, no se admiten y no darán el mismo resultado.

¿Se sube lo que escribo?

No. La codificación y la decodificación se hacen en tu navegador, no realizan ninguna solicitud de red y no guardan nada; una clave 2FA nunca sale de tu navegador.