Mode d’emploi
- Collez la chaîne Base58 dans la zone de saisie. Les espaces et les sauts de ligne sont ignorés.
- Lisez les octets décodés en hexadécimal dans la sortie.
- Copiez l’hexadécimal, ou cliquez sur « Inverser entrée et sortie » pour reconvertir de l’hexadécimal en Base58.
Comment le Base58 devient de l’hexadécimal
Base58 lit la chaîne entière comme un seul grand nombre écrit avec l’alphabet Bitcoin de 58 caractères, qui exclut 0, O, I et l. La conversion en hexadécimal écrit ce même nombre en base 16, à raison de deux chiffres hexadécimaux par octet : rien n’est ajouté ni perdu.
Les octets nuls placés au début des données n’ont aucune valeur numérique : Base58 enregistre donc chacun d’eux sous la forme d’un 1 de tête, le premier caractère de son alphabet. Le décodeur reconvertit chaque 1 de tête en un octet 00. Par exemple, 115Q se décode en 0000ff, et l’adresse du System Program de Solana, trente-deux caractères 1 d’affilée, se décode en 32 octets nuls. La conversion s’effectue localement dans votre navigateur.
Exemples Bitcoin, Solana et IPFS
Des espaces ont été ajoutés à l’hexadécimal ci-dessous pour faire apparaître les différentes parties :
Adresse Bitcoin (P2PKH, bloc genesis)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
version | hash160 (20 octets) | somme de contrôle (4 octets)
Clé publique Solana (programme SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 octets, sans octet de version ni somme de contrôle
IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | longueur 32 | condensat
Les anciennes adresses Bitcoin (legacy) commencent par 1, car leur octet de version est 00. Les adresses P2SH commencent par 3 et se décodent avec la version 05.
Les sommes de contrôle Base58Check restent dans les octets
Les adresses Bitcoin et les clés privées WIF utilisent Base58Check : quatre octets de somme de contrôle, tirés d’un double SHA-256 de la charge utile, sont ajoutés avant l’encodage. Cette page utilise le Base58 simple : la somme de contrôle est donc décodée comme n’importe quelle autre donnée et apparaît dans les 8 derniers chiffres hexadécimaux. Le hash160 d’une ancienne adresse correspond aux 40 chiffres hexadécimaux situés entre le 00 de tête et la somme de contrôle.
Pour vérifier qu’une adresse est intacte et obtenir la charge utile sans la somme de contrôle, décodez-la sur la page Base58Check. Les clés Solana et les hachages IPFS ne comportent pas de somme de contrôle : le Base58 simple est donc le bon choix dans leur cas.
Base58 en hexa dans le code
# Python (pip install base58)
import base58
base58.b58decode('115Q').hex() # '0000ff'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
Buffer.from(bs58.decode('115Q')).toString('hex'); // '0000ff'
Questions fréquentes
Pourquoi une adresse Bitcoin se décode-t-elle en 25 octets et non en 20 ?
Une ancienne adresse contient un octet de version, le hash160 de 20 octets de la clé publique et une somme de contrôle de 4 octets. Le Base58 simple renvoie les trois : vous obtenez donc 50 chiffres hexadécimaux. Le hash160 correspond à tout ce qui se trouve entre le premier octet et les quatre derniers.
Pourquoi chaque 1 de tête devient-il 00 ?
En Base58, le caractère 1 représente la valeur zéro. Les octets nuls de tête disparaîtraient si les données étaient traitées comme un simple nombre : chacun est donc écrit sous la forme d’un 1, puis redécodé en octet 00.
Pourquoi une erreur de caractère non valide s’affiche-t-elle ?
Quelle est la longueur d’une clé publique Solana ?
Exactement 32 octets, soit 64 chiffres hexadécimaux. En Base58, cela représente généralement 43 ou 44 caractères. Les clés qui commencent par des octets nuls peuvent être plus courtes, comme le montre l’adresse du System Program.