Cómo se usa
- Pega la cadena Base58 en el cuadro de entrada. Los espacios y los saltos de línea se ignoran.
- Lee en la salida los bytes decodificados en hexadecimal.
- Copia el hexadecimal o pulsa Intercambiar entrada y salida para volver a convertir el hexadecimal en Base58.
Cómo se convierte Base58 en hexadecimal
Base58 lee toda la cadena como un único número grande escrito con el alfabeto Bitcoin de 58 caracteres, que omite 0, O, I y l. Al convertir a hexadecimal se escribe ese mismo número en base 16, con dos dígitos hexadecimales por byte, así que no se añade ni se pierde nada.
Los bytes cero al principio de los datos no tienen valor numérico, así que Base58 registra cada uno como un 1 inicial, el primer carácter de su alfabeto. El decodificador convierte cada 1 inicial de nuevo en un byte 00. Por ejemplo, 115Q se decodifica como 0000ff, y la dirección del System Program de Solana, treinta y dos caracteres 1 seguidos, se decodifica como 32 bytes cero. La conversión se ejecuta localmente en tu navegador.
Ejemplos de Bitcoin, Solana e IPFS
En el hexadecimal de abajo se han añadido espacios para separar las partes:
Dirección Bitcoin (P2PKH, bloque génesis)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
versión | hash160 (20 bytes) | suma de verificación (4 bytes)
Clave pública de Solana (programa SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 bytes, sin byte de versión ni suma de verificación
IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | longitud 32 | resumen
Las direcciones Bitcoin heredadas empiezan por 1 porque su byte de versión es 00. Las direcciones P2SH empiezan por 3 y se decodifican con la versión 05.
Las sumas de verificación de Base58Check se quedan en los bytes
Las direcciones Bitcoin y las claves privadas WIF usan Base58Check: antes de codificar se añaden cuatro bytes de suma de verificación, tomados de un doble SHA-256 de la carga útil. Esta página usa Base58 simple, así que la suma de verificación se decodifica como cualquier otro dato y aparece como los últimos 8 dígitos hexadecimales. El hash160 de una dirección heredada son los 40 dígitos hexadecimales que hay entre el 00 inicial y la suma de verificación.
Para confirmar que una dirección está intacta y obtener la carga útil sin la suma de verificación, decodifícala en la página Base58Check. Las claves de Solana y los hashes de IPFS no llevan suma de verificación, así que para ellos lo adecuado es Base58 simple.
Base58 a hexadecimal en código
# Python (pip install base58)
import base58
base58.b58decode('115Q').hex() # '0000ff'
// JavaScript (instalación: npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex'); // '0000ff'
Preguntas frecuentes
¿Por qué una dirección Bitcoin se decodifica en 25 bytes y no en 20?
Una dirección heredada contiene una versión de 1 byte, el hash160 de 20 bytes de la clave pública y una suma de verificación de 4 bytes. Base58 simple devuelve las tres partes, así que obtienes 50 dígitos hexadecimales. El hash160 es todo lo que queda entre el primer byte y los cuatro últimos.
¿Por qué cada 1 inicial se convierte en 00?
En Base58, el carácter 1 representa el valor cero. Los bytes cero iniciales desaparecerían si los datos se trataran como un simple número, así que cada uno se escribe como un 1 y se decodifica de nuevo como un byte 00.
¿Por qué aparece un error de carácter no válido?
¿Cuánto mide una clave pública de Solana?
Exactamente 32 bytes, es decir, 64 dígitos hexadecimales. En Base58 suelen ser 43 o 44 caracteres. Las claves que empiezan por bytes cero pueden ser más cortas, como muestra la dirección del System Program.