Codificador y decodificador Base58Check

Añade una suma de verificación de 4 bytes basada en un doble SHA-256 y codifica en Base58, o decodifica una cadena Base58Check, verifica su suma de verificación y consulta el byte de versión y la carga útil.

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

Cómo se usa

  1. Elige Codificar para crear una cadena Base58Check, o Decodificar para verificar una y recuperar sus bytes.
  2. Para codificar, pon el Formato de entrada en Hexadecimal e introduce el byte de versión seguido de la carga útil, por ejemplo 00 y un HASH160 de 20 bytes.
  3. Deja activada la opción Suma de verificación Base58Check. La suma se añade al codificar y se verifica al decodificar.
  4. Para decodificar, pega la cadena y pon el Formato de salida en Hexadecimal. Obtendrás el byte de versión y la carga útil, sin la suma de verificación.

Cómo funciona Base58Check

  1. Se parte de un byte de versión que indica qué tipo de datos son, seguido de la carga útil, por ejemplo un hash de clave pública de 20 bytes.
  2. Se calcula el SHA-256 de esos bytes, se vuelve a aplicar SHA-256 al resultado y se toman los 4 primeros bytes como suma de verificación.
  3. Se añade la suma de verificación y se codifica todo con Base58. Cada byte 0x00 inicial se convierte en un 1.

Esta herramienta calcula la suma de verificación exactamente sobre los bytes que introduces. No añade ningún byte de versión por ti, así que inclúyelo al principio de la entrada. Al decodificar, vuelve a calcular la suma sobre todo excepto los 4 últimos bytes. Si coinciden, obtienes el byte de versión y la carga útil; si no, aparece un error de suma de verificación. Un error de escritura aleatorio solo pasa desapercibido aproximadamente una vez de cada cuatro mil millones.

Bytes de versión habituales

Byte de versiónDatosLa cadena codificada empieza por
0x00Dirección Bitcoin P2PKH (HASH160 de 20 bytes)1
0x05Dirección Bitcoin P2SH (hash de script de 20 bytes)3
0x6FDirección P2PKH de la testnet de Bitcoinm o n
0x80Clave privada WIF (32 bytes, más 0x01 si la clave es comprimida)5, o K / L si es comprimida

Las direcciones SegWit y Taproot que empiezan por bc1 usan Bech32, no Base58Check, y no se pueden decodificar aquí. Las direcciones de XRP Ledger usan la misma suma de verificación con el alfabeto Ripple: elige Ripple en la opción Alfabeto.

Ejemplo: de HASH160 a dirección

La conocida dirección asociada al bloque génesis de Bitcoin es el byte de versión 00 seguido de un HASH160 de 20 bytes. Si lo introduces en Hexadecimal con Base58Check activado, obtienes la dirección de siempre:

Input (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Output       1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

En código, el paquete base58 de Python ofrece b58encode_check() y b58decode_check(), y el paquete npm bs58check proporciona encode() y decode().

Especificación

Alfabeto1-9 A-Z a-z sin 0 O I l
Tamaño de salidaAprox. 137% más una suma de verificación de 4 bytes
RellenoNinguno
EstándarBitcoin Base58Check
Distingue mayúsculas y minúsculasSí

Ejemplos

Entrada (UTF-8)Salida
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Preguntas frecuentes

¿Por qué la decodificación falla con un error de suma de verificación?
O bien hay un carácter mal escrito, o está seleccionado el alfabeto equivocado, o la cadena es Base58 simple sin suma de verificación. Las cadenas Base58 simples, como las direcciones de Solana y los CID de IPFS, deben decodificarse en la página Base58.
¿La herramienta añade el byte de versión por mí?
No. La suma de verificación se calcula sobre los bytes que introduces, así que el byte de versión debe formar parte de la entrada. Cambia el Formato de entrada a Hexadecimal y escríbelo primero, por ejemplo 00 para una dirección Bitcoin.
¿Puedo decodificar una clave privada WIF?
Sí. Pégala en la pestaña Decodificar y elige Hexadecimal como Formato de salida. Obtendrás 80, la clave de 32 bytes y, en las claves comprimidas, un 01 final. La decodificación se realiza localmente en tu navegador, pero aun así trata con cuidado las claves privadas reales.
¿Puedo decodificar direcciones bc1?

No. Las direcciones SegWit nativas y Taproot usan Bech32 o Bech32m, una codificación distinta con su propia suma de verificación. En Bitcoin, Base58Check solo se usa en las direcciones heredadas que empiezan por 1 o 3 (m, n o 2 en la testnet).