Mode d’emploi
- Choisissez Encoder pour créer une chaîne Base58Check, ou Décoder pour en vérifier une et récupérer ses octets.
- 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.
- 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.
- 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
- 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.
- 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.
- Ajoutez la somme de contrôle à la fin et encodez le tout en Base58. Chaque octet
0x00de tête devient un1.
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 version | Données | La chaîne encodée commence par |
|---|---|---|
0x00 | Adresse Bitcoin P2PKH (HASH160 de 20 octets) | 1 |
0x05 | Adresse Bitcoin P2SH (hachage de script de 20 octets) | 3 |
0x6F | Adresse P2PKH du testnet Bitcoin | m ou n |
0x80 | Clé 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
| Alphabet | 1-9 A-Z a-z sans 0 O I l |
|---|---|
| Taille de sortie | Environ 137 %, plus une somme de contrôle de 4 octets |
| Remplissage | Aucun |
| Norme | Bitcoin Base58Check |
| Sensible à la casse | Oui |
Exemples
| Entrée (UTF-8) | Sortie |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Questions fréquentes
Pourquoi le décodage échoue-t-il avec une erreur de somme de contrôle ?
L’outil ajoute-t-il l’octet de version à ma place ?
00 pour une adresse Bitcoin.Puis-je décoder une clé privée WIF ?
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).