Mode d’emploi
- Choisissez Encoder pour transformer du texte ou des octets en Base58, ou Décoder pour reconvertir une chaîne Base58 en données.
- Sélectionnez l’alphabet. Bitcoin est l’alphabet par défaut ; c’est aussi celui qu’utilisent IPFS et Solana.
- Saisissez ou collez votre entrée. Passez l’entrée en Hexa si vous disposez d’octets bruts, comme un hachage ou une clé publique.
- N’activez l’option « Somme de contrôle Base58Check » que si la chaîne comporte une somme de contrôle de 4 octets, puis copiez ou téléchargez le résultat.
Qu’est-ce que Base58 ?
Base58 est un encodage binaire-texte créé pour Bitcoin. Son alphabet reprend les 62 chiffres et lettres latines, moins quatre caractères faciles à confondre : 0 (zéro), O (o majuscule), I (i majuscule) et l (L minuscule). Il ne contient pas non plus +, / ni = : une chaîne Base58 se sélectionne d’un double-clic et se place dans une URL sans échappement.
Contrairement à Base64, Base58 ne découpe pas l’entrée en groupes de bits. L’entrée entière est traitée comme un seul grand nombre, écrit en base 58 : il n’y a donc pas de remplissage, et la modification d’un seul octet peut changer de nombreux caractères de sortie. Les octets nuls de tête n’ont aucune valeur numérique ; pour les conserver, chacun est écrit avec le premier caractère de l’alphabet (1 dans l’alphabet Bitcoin). La sortie fait environ 1,37 fois la taille de l’entrée.
Où Base58 est utilisé
- Bitcoin. Les anciennes adresses (legacy) et les clés privées WIF sont au format Base58Check : du Base58 avec un octet de version et une somme de contrôle.
- IPFS. Un identifiant de contenu de version 0 (CIDv0) est la forme Base58 d’un multihash SHA-256 ; c’est pourquoi ces CID font 46 caractères et commencent par
Qm. - Solana. Les clés publiques, les adresses de compte et les signatures de transaction sont écrites en Base58 simple, sans somme de contrôle. Une clé de 32 octets donne généralement 43 ou 44 caractères.
- Flickr et le XRP Ledger. Les liens courts de Flickr utilisent l’alphabet Flickr, et les adresses XRP l’alphabet Ripple, d’où leur premier caractère
r.
Pour passer du Base58 aux octets bruts et inversement, utilisez Base58 en hexa et Hexa en Base58. Pour des identifiants qui doivent simplement être alphanumériques, comparez avec Base62.
Les alphabets Base58
| Alphabet | Caractères, dans l’ordre |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
Les trois utilisent les mêmes 58 caractères dans un ordre différent : une chaîne encodée avec un alphabet donne d’autres octets, ou une erreur, lorsqu’on la décode avec un autre.
Base58 dans le code
# Python (installation : pip install base58)
import base58
base58.b58encode(b'hello') # b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # b'hello'
// JavaScript (installation : npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
Spécifications
| Alphabet | 1-9 A-Z a-z sans 0 O I l |
|---|---|
| Taille de sortie | Environ 137 % (conversion en grand entier) |
| Remplissage | Aucun (les octets nuls de tête deviennent des 1) |
| Norme | Bitcoin Base58 |
| Sensible à la casse | Oui |
Exemples
| Entrée (UTF-8) | Sortie |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Questions fréquentes
Pourquoi les octets nuls de tête deviennent-ils des 1 ?
1 dans l’alphabet Bitcoin. C’est pourquoi 32 octets nuls s’encodent en une suite de 32 chiffres 1.Base58 est-il sensible à la casse ?
Oui. Les majuscules et les minuscules sont des chiffres différents : changer la casse d’un seul caractère modifie les octets décodés ou rend la chaîne non valide.