Subir un archivo
  1. base64hub
  2. Otras bases
  3. Base58Check

Codificador y decodificador Base58Check

Pega en hex un byte de versión más la carga útil para obtener la cadena Base58Check con su suma de comprobación de 4 bytes. Invierte la dirección para decodificar una dirección o una clave WIF: se verifica la suma de comprobación y la carga útil vuelve en hex.

Gratis sin registro, sin límites Local no se sube nada Suma de comprobación verificada al decodificar Actualizado 27 oct 2026
Entrada 0Bytes 0 BSalida 0

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo codificar y decodificar Base58Check

Para codificar:

  1. Pega el hex en Entrada · Hex: primero el byte de versión y después la carga útil. Se aceptan espacios, dos puntos y prefijos 0x.
  2. Lee el resultado en Salida · Base58Check. La herramienta calcula la suma de comprobación y la añade antes de codificar.
  3. Deja el Alfabeto en Bitcoin para Bitcoin y la mayoría de sus bifurcaciones.

Para decodificar, haz clic en Base58Check → Hex en el selector de dirección y pega la dirección o la clave. El decodificador la convierte, vuelve a calcular la suma de comprobación y devuelve la carga útil (que sigue empezando por el byte de versión) solo si coinciden los 4 bytes de la suma. Un solo carácter mal escrito da «la suma de comprobación no coincide: la cadena está mal escrita o dañada».

Qué añade Base58Check a Base58

El Base58 simple no detecta errores: una errata da otra cadena igual de válida. Base58Check lo resuelve con dos añadidos:

version (1 byte) | payload | first 4 bytes of SHA-256(SHA-256(version | payload))

Después, todo se codifica en Base58, así que los bytes cero iniciales se convierten en 1. El byte de versión indica la red y el tipo de datos, y como va al principio del número, también fija el primer carácter del resultado.

Bytes de versión y prefijos

El mismo hash de 20 bytes, 62e907b15cbf27d5425399ebf6f0fb50ebb88f18, con distintos bytes de versión:

VersiónSignificadoPrimer carácterResultado
00Dirección Bitcoin P2PKH11A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
05Dirección Bitcoin P2SH33Ai1JZ8pdJb2ksieUV8FsxSNVJCpoPi8W6
6fDirección P2PKH de testnetm o nmpXwg4jMtRhuSpVq4xS3HFHmCmWp9NyGKt
c4Dirección P2SH de testnet22N2GDNJ4rEm6NxfMC9ck8VuRdheQzXWaNZv

La primera fila es la dirección que recibió la recompensa del bloque génesis de Bitcoin. Las demás filas solo ilustran el byte de versión: envolver el hash de una clave pública en un byte de versión P2SH no da una dirección P2SH utilizable, porque P2SH es el hash de un script.

Claves privadas WIF

Wallet Import Format es Base58Check con el byte de versión 80 y una clave privada de 32 bytes. Un byte 01 al final marca una clave cuya clave pública se usa en forma comprimida. Con la conocida clave de ejemplo de la wiki de Bitcoin:

Entrada hexBase58Check
80 + 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
lo mismo + 01KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617

Las claves WIF sin comprimir empiezan por 5, y las comprimidas por K o L. Esta clave de ejemplo es pública; no la uses nunca para fondos reales.

Base58Check en Python

La suma de comprobación son dos llamadas a SHA-256 de la biblioteca estándar. Con un pequeño codificador Base58:

import hashlib

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def b58encode(data: bytes) -> str:
    n = int.from_bytes(data, "big")
    out = ""
    while n:
        n, r = divmod(n, 58)
        out = ALPHABET[r] + out
    zeros = len(data) - len(data.lstrip(b"\0"))
    return "1" * zeros + out

def b58check(payload: bytes) -> str:
    checksum = hashlib.sha256(hashlib.sha256(payload).digest()).digest()[:4]
    return b58encode(payload + checksum)

b58check(bytes.fromhex("0062e907b15cbf27d5425399ebf6f0fb50ebb88f18"))
# '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa'

Para verificar una cadena en código, decodifícala con Base58, separa los últimos 4 bytes y compáralos con el doble hash del resto. Hay más manejo de bytes en Python en la página de Python.

Problemas habituales

  • La suma de comprobación no coincide. La cadena tiene una errata, está cortada o es Base58 simple sin suma de comprobación (las direcciones de Solana y los hashes de IPFS son Base58 simple; para ellos usa el decodificador Base58).
  • «Demasiado corto para contener la suma de comprobación de 4 bytes». El valor decodificado tiene menos de 4 bytes, así que no puede ser Base58Check.
  • Carácter inesperado "0", "O", "I" o "l". No está en el alfabeto Base58; revisa la transcripción.
  • Primer carácter incorrecto tras codificar. Revisa el byte de versión. Sin él, un hash de 20 bytes suele codificarse en una cadena que no empieza por 1.

Preguntas frecuentes

¿Cómo se calcula la suma de comprobación de Base58Check?

Se calcula el SHA-256 de la carga útil (byte de versión incluido), luego el SHA-256 del resultado, y se toman los 4 primeros bytes. Esos 4 bytes se añaden antes de la codificación Base58.

¿Una suma de comprobación válida significa que es seguro enviar a esa dirección?

Significa que la cadena no se escribió mal: una errata al azar pasa con una probabilidad de alrededor de 1 entre 4300 millones. No dice nada de quién controla la dirección ni de si pertenece a la red que crees.

¿Base58Check puede decodificar direcciones bc1?

No. Las direcciones que empiezan por bc1 son Bech32 o Bech32m (SegWit y Taproot), que usan otro alfabeto y otra suma de comprobación.

¿Debo pegar aquí una clave privada real?

La conversión se hace en tu navegador y la página bloquea todas las peticiones de red salvo las del contador de visitas de Cloudflare, pero una clave WIF controla fondos. Usa una clave de prueba, o un equipo sin conexión, para cualquier cosa que tenga valor.