Encodeur et décodeur Base58

Convertissez du texte, des octets hexadécimaux ou de petits fichiers en Base58, et inversement. Choisissez l’alphabet Bitcoin, Flickr ou Ripple, et ajoutez ou vérifiez si besoin une somme de contrôle Base58Check.

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

Mode d’emploi

  1. Choisissez Encoder pour transformer du texte ou des octets en Base58, ou Décoder pour reconvertir une chaîne Base58 en données.
  2. Sélectionnez l’alphabet. Bitcoin est l’alphabet par défaut ; c’est aussi celui qu’utilisent IPFS et Solana.
  3. 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.
  4. 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

AlphabetCaractères, dans l’ordre
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

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

Alphabet1-9 A-Z a-z sans 0 O I l
Taille de sortieEnviron 137 % (conversion en grand entier)
RemplissageAucun (les octets nuls de tête deviennent des 1)
NormeBitcoin Base58
Sensible à la casseOui

Exemples

Entrée (UTF-8)Sortie
Hello, World!72k1xXWG59fYdzSNoA
Base64.isr1Nm3AS7ZcnN
你好2xuZUfBKa

Questions fréquentes

Pourquoi les octets nuls de tête deviennent-ils des 1 ?
Base58 convertit l’entrée en un seul nombre, et les octets nuls de tête n’en modifient pas la valeur. Pour les conserver, chaque octet nul de tête est écrit avec le premier caractère de l’alphabet, soit 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.

Quelle est la différence entre Base58 et Base58Check ?
Base58Check ajoute une somme de contrôle de 4 octets (le début d’un double hachage SHA-256) avant l’encodage, ce qui permet de détecter les fautes de frappe. Activez ici l’option « Somme de contrôle Base58Check », ou consultez la page Base58Check pour plus de détails.
Pourquoi l’entrée est-elle limitée à environ 20 Ko ?
Comme l’entrée entière forme un seul grand nombre, le temps de calcul croît avec le carré de sa longueur. Base58 est conçu pour des clés, des hachages et des adresses, pas pour des fichiers. Pour de gros volumes de données, utilisez Base64 ou Base85.