Convertisseur hexadécimal en Base58

Collez des octets hexadécimaux et obtenez la chaîne Base58 utilisée par Bitcoin, Solana et IPFS. Chaque octet 00 de tête devient un 1 de tête, et tous les autres octets sont conservés à l’identique.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Collez les octets hexadécimaux dans la zone de saisie. Les espaces, les deux-points et le préfixe 0x sont acceptés.
  2. Lisez le résultat Base58 dans la sortie.
  3. Copiez-le, ou cliquez sur « Inverser entrée et sortie » pour redécoder du Base58 en hexadécimal.

Comment l’hexadécimal devient du Base58

Les chiffres hexadécimaux sont d’abord convertis en octets, à raison de deux chiffres par octet : l’entrée doit donc comporter un nombre pair de chiffres. Les octets sont ensuite lus comme un seul nombre gros-boutiste (big-endian) et réécrits en base 58 avec l’alphabet Bitcoin. Chaque octet 00 de tête est écrit sous la forme d’un 1 : c’est pourquoi 0000ff devient 115Q, alors que ff seul devient 5Q.

Base58 a besoin d’environ 1,37 caractère par octet : 64 chiffres hexadécimaux (32 octets) se réduisent donc à 43 ou 44 caractères. L’alphabet ne contient ni 0, ni O, ni I, ni l, ni +, ni / : le résultat se lit facilement à voix haute, se sélectionne d’un double-clic et s’insère sans problème dans une URL. Tout est calculé dans votre navigateur.

Construire des identifiants Solana et IPFS

  • Solana : une adresse est la clé publique Ed25519 de 32 octets écrite en Base58, sans préfixe ni somme de contrôle. Collez la clé hexadécimale de 64 chiffres pour obtenir l’adresse.
  • IPFS CIDv0 : un CIDv0 est un multihash sha2-256 écrit en Base58. Placez 1220 devant le condensat de 64 chiffres et vous obtenez une chaîne de 46 caractères qui commence par Qm. Le condensat doit être celui qu’IPFS a calculé pour le bloc encodé, qui n’est pas le même que le SHA-256 du fichier d’origine.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Les adresses Bitcoin exigent une somme de contrôle

Un hash160 seul n’est pas une adresse. Une ancienne adresse Bitcoin est l’encodage Base58Check de l’octet de version 00 suivi du hash160 de 20 octets, ce qui ajoute une somme de contrôle double SHA-256 de 4 octets avant l’encodage. Encoder 00 et le hash160 en Base58 simple donne une chaîne plus courte, sans somme de contrôle, que les portefeuilles rejettent.

Utilisez plutôt la page Base58Check : réglez l’entrée sur Hexa, saisissez 00 suivi du hash160, et la somme de contrôle est ajoutée automatiquement. Si votre hexadécimal se termine déjà par la bonne somme de contrôle, cette page produit la même adresse.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Hexa en Base58 dans le code

# Python (pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # b'115Q'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex'));    // '115Q'

Questions fréquentes

Comment transformer un hash160 en adresse Bitcoin ?
Placez devant lui l’octet de version 00 et encodez le tout en Base58Check, et non en Base58 simple. La page Base58Check s’en charge lorsque vous saisissez les octets en hexadécimal.
Pourquoi le résultat commence-t-il par plusieurs caractères 1 ?

Votre hexadécimal commence par autant d’octets 00. Base58 les conserve sous forme de 1 de tête afin qu’ils soient restaurés lors du décodage de la chaîne.

Pourquoi mon entrée hexadécimale est-elle refusée ?

L’hexadécimal exige un nombre pair de chiffres et uniquement les caractères 0-9 et a-f, en majuscules ou en minuscules. Les espaces, les deux-points et le préfixe 0x sont supprimés automatiquement ; toute autre anomalie, comme une lettre g égarée ou un chiffre manquant, provoque une erreur.

Quel alphabet Base58 cette page utilise-t-elle ?
L’alphabet Bitcoin, qu’utilisent aussi Solana, IPFS et la plupart des autres projets. Pour l’alphabet Flickr ou Ripple, rendez-vous sur la page Base58, choisissez-y l’alphabet et saisissez votre entrée sous forme d’octets hexadécimaux.