Encodeur et décodeur Base58Check

Ajoutez une somme de contrôle double SHA-256 de 4 octets et encodez en Base58, ou décodez une chaîne Base58Check, vérifiez sa somme de contrôle et lisez l’octet de version et la charge utile.

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

Mode d’emploi

  1. Choisissez Encoder pour créer une chaîne Base58Check, ou Décoder pour en vérifier une et récupérer ses octets.
  2. Pour encoder, réglez l’entrée sur Hexa et saisissez l’octet de version suivi de la charge utile, par exemple 00 et un HASH160 de 20 octets.
  3. Laissez l’option « Somme de contrôle Base58Check » activée. La somme de contrôle est ajoutée à l’encodage et vérifiée au décodage.
  4. Pour décoder, collez la chaîne et réglez la sortie sur Hexa. Vous obtenez l’octet de version et la charge utile, sans la somme de contrôle.

Fonctionnement de Base58Check

  1. Commencez par un octet de version qui indique la nature des données, suivi de la charge utile, par exemple le hachage de 20 octets d’une clé publique.
  2. Hachez ces octets avec SHA-256, hachez le résultat une seconde fois avec SHA-256 et gardez les 4 premiers octets comme somme de contrôle.
  3. Ajoutez la somme de contrôle à la fin et encodez le tout en Base58. Chaque octet 0x00 de tête devient un 1.

Cet outil calcule la somme de contrôle exactement sur les octets que vous saisissez. Il n’ajoute pas d’octet de version à votre place : placez-le donc au début de votre entrée. Au décodage, il recalcule la somme de contrôle sur tous les octets sauf les 4 derniers. Si elles correspondent, vous obtenez l’octet de version et la charge utile ; sinon, une erreur de somme de contrôle s’affiche. Une faute de frappe aléatoire ne passe inaperçue qu’environ une fois sur quatre milliards.

Octets de version courants

Octet de versionDonnéesLa chaîne encodée commence par
0x00Adresse Bitcoin P2PKH (HASH160 de 20 octets)1
0x05Adresse Bitcoin P2SH (hachage de script de 20 octets)3
0x6FAdresse P2PKH du testnet Bitcoinm ou n
0x80Clé privée WIF (32 octets, plus 0x01 pour une clé compressée)5, ou K / L si elle est compressée

Les adresses SegWit et Taproot qui commencent par bc1 utilisent Bech32, et non Base58Check : elles ne peuvent pas être décodées ici. Les adresses du XRP Ledger utilisent la même somme de contrôle avec l’alphabet Ripple : choisissez Ripple dans l’option Alphabet.

Exemple : du HASH160 à l’adresse

L’adresse bien connue associée au bloc genesis de Bitcoin se compose de l’octet de version 00 suivi d’un HASH160 de 20 octets. Saisie en entrée Hexa avec Base58Check activé, elle donne l’adresse familière :

Entrée (Hexa)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Sortie         1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Dans le code, le paquet Python base58 fournit b58encode_check() et b58decode_check(), et le paquet npm bs58check propose encode() et decode().

Spécifications

Alphabet1-9 A-Z a-z sans 0 O I l
Taille de sortieEnviron 137 %, plus une somme de contrôle de 4 octets
RemplissageAucun
NormeBitcoin Base58Check
Sensible à la casseOui

Exemples

Entrée (UTF-8)Sortie
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Questions fréquentes

Pourquoi le décodage échoue-t-il avec une erreur de somme de contrôle ?
Soit un caractère a été mal saisi, soit le mauvais alphabet est sélectionné, soit la chaîne est du Base58 simple sans somme de contrôle. Les chaînes Base58 simples, comme les adresses Solana et les CID IPFS, se décodent sur la page Base58.
L’outil ajoute-t-il l’octet de version à ma place ?
Non. La somme de contrôle est calculée sur les octets que vous saisissez : l’octet de version doit donc faire partie de votre entrée. Passez l’entrée en Hexa et tapez-le en premier, par exemple 00 pour une adresse Bitcoin.
Puis-je décoder une clé privée WIF ?
Oui. Collez-la dans l’onglet Décoder et choisissez la sortie Hexa. Vous obtenez 80, la clé de 32 octets et, pour les clés compressées, un 01 final. Le décodage s’effectue localement dans votre navigateur, mais manipulez tout de même les vraies clés privées avec prudence.
Puis-je décoder les adresses bc1 ?

Non. Les adresses SegWit natives et Taproot utilisent Bech32 ou Bech32m, un encodage différent doté de sa propre somme de contrôle. Dans Bitcoin, Base58Check ne sert qu’aux anciennes adresses qui commencent par 1 ou 3 (m, n ou 2 sur le testnet).