Conversor de hexadecimal a Base58

Pega bytes en hexadecimal y obtén la cadena Base58 que usan Bitcoin, Solana e IPFS. Cada byte 00 inicial se convierte en un 1 inicial, y todos los demás bytes se conservan exactamente.

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

Cómo se usa

  1. Pega los bytes en hexadecimal en el cuadro de entrada. Se aceptan espacios, dos puntos y el prefijo 0x.
  2. Lee en la salida el resultado en Base58.
  3. Cópialo o pulsa Intercambiar entrada y salida para decodificar el Base58 de nuevo a hexadecimal.

Cómo se convierte el hexadecimal en Base58

Primero, los dígitos hexadecimales se convierten en bytes, dos dígitos por byte, así que la entrada necesita un número par de dígitos. Después, los bytes se leen como un único número big-endian y se reescriben en base 58 con el alfabeto Bitcoin. Cada byte 00 inicial se escribe como un 1, y por eso 0000ff se convierte en 115Q, mientras que ff por sí solo se convierte en 5Q.

Base58 necesita unos 1,37 caracteres por byte, así que 64 dígitos hexadecimales (32 bytes) se reducen a 43 o 44 caracteres. El alfabeto no tiene 0, O, I, l, + ni /, de modo que el resultado es fácil de leer en voz alta, se puede seleccionar con un doble clic y cabe en una URL. Todo se calcula en tu navegador.

Cómo crear identificadores de Solana e IPFS

  • Solana: una dirección es la clave pública Ed25519 de 32 bytes en Base58, sin prefijo ni suma de verificación. Pega la clave hexadecimal de 64 dígitos para obtener la dirección.
  • IPFS CIDv0: un CIDv0 es un multihash sha2-256 en Base58. Pon 1220 delante del resumen de 64 dígitos y obtendrás una cadena de 46 caracteres que empieza por Qm. El resumen debe ser el que IPFS calculó para el bloque codificado, que no es lo mismo que el SHA-256 del archivo original.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Las direcciones Bitcoin necesitan una suma de verificación

Un hash160 por sí solo no es una dirección. Una dirección Bitcoin heredada es la codificación Base58Check del byte de versión 00 seguido del hash160 de 20 bytes, y Base58Check añade antes de codificar una suma de verificación de 4 bytes calculada con un doble SHA-256. Si codificas 00 y el hash160 con Base58 simple, obtienes una cadena más corta sin suma de verificación, y los monederos la rechazan.

Usa en su lugar la página Base58Check: cambia el Formato de entrada a Hexadecimal, escribe 00 seguido del hash160 y la suma de verificación se añadirá automáticamente. Si tu hexadecimal ya termina con la suma de verificación correcta, esta página produce la misma dirección.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Hexadecimal a Base58 en código

# Python (pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # b'115Q'

// JavaScript (instalación: npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex'));    // '115Q'

Preguntas frecuentes

¿Cómo convierto un hash160 en una dirección Bitcoin?
Ponle delante el byte de versión 00 y codifícalo con Base58Check, no con Base58 simple. La página Base58Check lo hace cuando introduces los bytes en hexadecimal.
¿Por qué el resultado empieza por varios caracteres 1?

Tu hexadecimal empieza por el mismo número de bytes 00. Base58 los conserva como caracteres 1 iniciales para que se restauren al decodificar la cadena.

¿Por qué se rechaza mi entrada hexadecimal?

El hexadecimal necesita un número par de dígitos y solo admite los caracteres 0-9 y a-f, en mayúsculas o minúsculas. Los espacios, los dos puntos y el prefijo 0x se eliminan automáticamente; cualquier otra cosa, como una letra g suelta o un dígito que falta, produce un error.

¿Qué alfabeto Base58 usa esta página?
El alfabeto Bitcoin, que también usan Solana, IPFS y la mayoría de los demás proyectos. Para el alfabeto Flickr o Ripple, ve a la página Base58, elige allí el Alfabeto e introduce la entrada como bytes en hexadecimal.