Cómo se usa
- Elige Codificar para convertir texto o bytes en Base58, o Decodificar para convertir una cadena Base58 de nuevo en datos.
- Selecciona el Alfabeto. Bitcoin es el predeterminado y también es el que usan IPFS y Solana.
- Escribe o pega la entrada. Cambia el Formato de entrada a Hexadecimal si tienes bytes sin procesar, como un hash o una clave pública.
- Activa la Suma de verificación Base58Check solo si la cadena lleva una suma de verificación de 4 bytes y, después, copia o descarga el resultado.
¿Qué es Base58?
Base58 es una codificación de binario a texto creada para Bitcoin. Su alfabeto está formado por los 62 dígitos y letras latinas, menos cuatro caracteres fáciles de confundir: 0 (cero), O (o mayúscula), I (i mayúscula) y l (L minúscula). Tampoco incluye +, / ni =, así que una cadena Base58 se selecciona entera con un doble clic y se puede poner en una URL sin escapes.
A diferencia de Base64, Base58 no divide la entrada en grupos de bits. Toda la entrada se trata como un único número grande que se escribe en base 58, por lo que no hay relleno y el cambio de un solo byte puede alterar muchos caracteres de la salida. Los bytes cero iniciales no tienen valor numérico, así que cada uno se escribe como el primer carácter del alfabeto (1 en el alfabeto Bitcoin) para conservarlo. La salida ocupa unas 1,37 veces el tamaño de la entrada.
Dónde se usa Base58
- Bitcoin. Las direcciones heredadas (legacy) y las claves privadas WIF usan Base58Check: Base58 con un byte de versión y una suma de verificación.
- IPFS. Un identificador de contenido de la versión 0 (CIDv0) es la forma Base58 de un multihash SHA-256; por eso esos CID tienen 46 caracteres y empiezan por
Qm. - Solana. Las claves públicas, las direcciones de cuenta y las firmas de transacciones se escriben en Base58 simple, sin suma de verificación. Una clave de 32 bytes suele quedar en 43 o 44 caracteres.
- Flickr y XRP Ledger. Los enlaces cortos de Flickr usan el alfabeto Flickr, y las direcciones de XRP usan el alfabeto Ripple; por eso empiezan por
r.
Para pasar de Base58 a bytes sin procesar y al revés, usa Base58 a hexadecimal y Hexadecimal a Base58. Si solo necesitas identificadores alfanuméricos, compáralo con Base62.
Alfabetos de Base58
| Alfabeto | Caracteres, en orden |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
Los tres usan los mismos 58 caracteres en distinto orden, así que una cadena codificada con un alfabeto da otros bytes, o un error, si se decodifica con otro.
Base58 en código
# Python (pip install base58)
import base58
base58.b58encode(b'hello') # b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # b'hello'
// JavaScript (instalación: npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
Especificación
| Alfabeto | 1-9 A-Z a-z sin 0 O I l |
|---|---|
| Tamaño de salida | Aprox. 137% (conversión como número grande) |
| Relleno | Ninguno (los bytes cero iniciales se convierten en 1) |
| Estándar | Bitcoin Base58 |
| Distingue mayúsculas y minúsculas | Sí |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Preguntas frecuentes
¿Por qué los bytes cero iniciales se convierten en 1?
1 en el alfabeto Bitcoin. Por eso 32 bytes cero se codifican como una serie de 32 unos.¿Base58 distingue mayúsculas y minúsculas?
Sí. Las mayúsculas y las minúsculas son dígitos distintos, así que pasar un solo carácter de mayúscula a minúscula, o al revés, modifica los bytes decodificados o invalida la cadena.