Conversor de hexadecimal a Base64

Pega bytes en hexadecimal y obtén los mismos datos en Base64. Los separadores, como espacios, dos puntos y prefijos 0x, se eliminan automáticamente, así que puedes pegar hashes y huellas digitales tal cual.

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

Cómo se usa

  1. Pega la cadena hexadecimal en la entrada. En Origen ya está seleccionado Hexadecimal (Base16) y en Destino, Base64.
  2. No te preocupes por el formato: se ignoran los espacios, los saltos de línea, los dos puntos, los guiones y los prefijos 0x o \x.
  3. Cambia Destino a Base64URL si el valor va a ir en una URL, un JWT o una JSON Web Key.
  4. Copia el resultado en Base64.

Por qué convertir hexadecimal a Base64

La mayoría de las herramientas de hash muestran los resúmenes en hexadecimal, pero muchos protocolos esperan Base64, que es un tercio más corto. Casos habituales:

  • Subresource Integrity. El atributo integrity de scripts y hojas de estilo contiene un resumen en Base64, por ejemplo sha384- seguido de 64 caracteres Base64.
  • Content Security Policy. Los hashes que autorizan scripts en línea se escriben como 'sha256-...' con un valor en Base64.
  • Sumas de verificación en API HTTP. El encabezado Content-MD5 y los encabezados de suma de verificación de Amazon S3 llevan el Base64 del resumen binario, no la cadena hexadecimal que muestra md5sum.
  • Identificadores compactos. Un UUID ocupa 16 bytes: 32 dígitos hexadecimales, pero solo 22 caracteres en Base64URL sin relleno.

Formatos hexadecimales admitidos

Los dígitos hexadecimales no distinguen entre mayúsculas y minúsculas. Antes de decodificar, el conversor elimina los espacios en blanco, los saltos de línea, los dos puntos, los punto y coma, las comas, los guiones y los prefijos 0x, \x, % y &#x. Así se cubren las huellas de OpenSSL como AB:CD:EF, los arrays de C como 0x12, 0x34, las cadenas con secuencias de escape como \x12\x34, los bytes con codificación porcentual y los UUID con guiones.

Después de la limpieza, la entrada debe tener un número par de dígitos, dos por byte. Un número impar se señala como error y suele indicar que se ha perdido un cero inicial, por ejemplo abc cuando se quería escribir 0abc.

Codifica los bytes, no el texto hexadecimal

Un error frecuente es pegar un resumen hexadecimal en un codificador normal de texto a Base64. Así se codifican los caracteres 0-9a-f en lugar de los bytes que representan, y el resultado ocupa el doble de lo debido: 88 caracteres para un resumen SHA-256 en vez de 44. Cualquier sistema que espere el resumen binario, como un atributo SRI o un encabezado de suma de verificación, lo rechazará. Este conversor decodifica primero el hexadecimal a bytes.

# Shell: resumen hexadecimal a Base64
printf '%s' "$HEX" | xxd -r -p | base64

# Valor SRI de un archivo en un solo paso
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (se detiene sin avisar en el primer carácter no hexadecimal)
Buffer.from(h, 'hex').toString('base64')

Preguntas frecuentes

¿Por qué aparece un error con mi cadena hexadecimal?

O bien la entrada contiene un carácter que no es un dígito hexadecimal, como la letra O en lugar de un cero, o bien el número de dígitos es impar. El mensaje de error indica la posición del carácter no válido; si la longitud es impar, comprueba si falta un 0 inicial.

¿Qué longitud tendrá el resultado en Base64?
Divide el número de dígitos hexadecimales entre 2 para obtener los bytes y cuenta 4 caracteres por cada 3 bytes, redondeando hacia arriba. Un resumen SHA-256 de 64 dígitos se convierte en 44 caracteres Base64, incluido un signo =.
¿Cómo creo un hash de Subresource Integrity?
Calcula el resumen SHA-384 del archivo, convierte aquí el resumen hexadecimal y escribe integrity="sha384-..." con el valor en Base64. Con OpenSSL puedes hacerlo con un solo comando: openssl dgst -sha384 -binary file.js | openssl base64 -A.
¿El resultado es Base64 estándar o seguro para URL?
Es Base64 estándar con + y /, como exigen SRI, CSP y los encabezados HTTP de suma de verificación. Elige Base64URL como codificación de destino cuando necesites una salida segura para URL.