Cómo convertir hex a Base64
- Pega el hex en Entrada · Hex. Los espacios, saltos de línea, dos puntos, guiones y prefijos
0xo\xse ignoran, y da igual si está en mayúsculas o minúsculas. - El Base64 aparece en Salida · Base64 mientras escribes.
- Bajo la salida, desmarca Relleno (=) si el receptor quiere Base64 sin relleno, y pon Ajuste de línea en 64 (PEM) o 76 (MIME) para una salida ajustada.
- Copiar salida, o usa el selector Base64 → Hex para comprobar el resultado en la otra dirección. Base64 a hex es la misma herramienta en sentido contrario.
Digests de hash: hex frente a Base64
Las funciones hash devuelven bytes en bruto. Herramientas de línea de comandos como sha256sum y md5sum imprimen esos bytes en hex, mientras que muchos protocolos esperan ese mismo digest en Base64. Estos son los digests de los cinco bytes hello:
| Hash | Hex (de sha256sum y similares) | Base64 |
|---|---|---|
| MD5 | 5d41402abc4b2a76b9719d911017c592 | XUFAKrxLKna5cZ2REBfFkg== |
| SHA-1 | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d | qvTGHdzF6KLavt4PO0gs2a6pQ00= |
| SHA-256 | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= |
Dónde se pide la forma Base64:
- Subresource Integrity.
integrity="sha384-…"en una etiqueta<script>o<link>contiene un digest en Base64. El generador de hashes SRI construye el atributo completo a partir de un archivo. - Cabeceras
Content-MD5. El RFC 1864 define el valor como el Base64 del digest MD5 de 16 bytes, y los almacenes de objetos que comprueban las subidas con él rechazan la forma hex. Consulta MD5 en Base64. - Firmas y HMAC en peticiones a API, que normalmente se envían en Base64. HMAC en Base64 las calcula en cualquiera de las dos formas.
- Claves y secretos: una clave de 32 bytes impresa por
openssl rand -hex 32se convierte en el valor Base64 de 44 caracteres que esperan muchos archivos de configuración.
Para el SHA-256 de tu propio texto o archivo, SHA-256 en Base64 se salta por completo el paso por hex.
El error típico: codificar el texto hex
echo -n 2cf24d…9824 | base64 da un resultado verosímil pero incorrecto. Codifica los 64 caracteres ASCII del hex en lugar de los 32 bytes que representan, y devuelve 88 caracteres que empiezan por MmNmMjRk. Ese valor se decodifica de vuelta al texto hex, así que nada protesta hasta que falla una firma o una comprobación de integridad. Decodifica primero el hex:
echo -n 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | xxd -r -p | base64
# LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
printf hello | openssl dgst -sha256 -binary | base64
# same result, without going through hex at all
xxd -r -p convierte el hex simple de nuevo en bytes. Viene con Vim; en sistemas mínimos instala el paquete xxd. Con OpenSSL, -binary es lo que hace que el digest salga como bytes en lugar de hex.
Hex a Base64 en código
import base64
base64.b64encode(bytes.fromhex("5d41402abc4b2a76b9719d911017c592")).decode()
# 'XUFAKrxLKna5cZ2REBfFkg=='
Buffer.from("5d41402abc4b2a76b9719d911017c592", "hex").toString("base64");
// 'XUFAKrxLKna5cZ2REBfFkg=='
Las páginas de Python y Node.js cubren las variantes URL-safe y sin relleno. Cuando el digest va en una URL o un JWT, convierte el resultado con Base64 a Base64URL.
Si la conversión falla
- «número impar de dígitos hex». Cada byte necesita dos dígitos y uno se perdió al copiar. Revisa los dos extremos de la entrada.
- «carácter inesperado». En la entrada hay algo que no es hex, como una etiqueta
sha256:o el nombre de archivo quesha256sumimprime después del digest. Quítalo; Mostrar salta a ese punto. - Desplazamientos de un volcado hex. En
00000010: 4865 6c6c, el00000010es una posición, no datos, pero es hex válido y se convertirá. Usa la salida dexxd -p, que no lleva desplazamientos.
Preguntas frecuentes
¿Cómo convierto un hash SHA-256 en hex a Base64?
Pega los 64 dígitos hex en la entrada. El resultado son 44 caracteres que terminan en =; por ejemplo, 2cf24dba…9824 se convierte en LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=. En la línea de comandos: echo -n HEX | xxd -r -p | base64.
¿Por qué mi Base64 es el doble de largo de lo que debería?
La cadena hex se codificó como texto, así que cada dígito hex se convirtió en un byte. Un digest SHA-256 tratado así da 88 caracteres en lugar de 44. Decodifica primero el hex a bytes, que es lo que hace este convertidor.
¿Cuántos caracteres Base64 salen de una cadena hex?
Dos dígitos hex forman un byte, y cada 3 bytes se convierten en 4 caracteres Base64, redondeando a un múltiplo de 4. 32 dígitos hex (MD5) dan 24 caracteres, 40 (SHA-1) dan 28, 64 (SHA-256) dan 44 y 128 (SHA-512) dan 88.
¿Puedo convertir un UUID a Base64?
Sí, pégalo con los guiones. Los 16 bytes de 123e4567-e89b-12d3-a456-426614174000 se convierten en Ej5FZ+ibEtOkVkJmFBdAAA==, 24 caracteres en lugar de 36.