Encodeur et décodeur Base58

Étape 1 / 333%

Entrée


            

Base58 est un encodage binaire vers texte conçu pour éviter plusieurs caractères faciles à confondre. L’alphabet Bitcoin omet 0 O I l ainsi que + /, tandis que d’autres systèmes ordonnent différemment les mêmes 58 symboles. Les anciennes adresses Bitcoin en Base58Check et les chaînes IPFS CIDv0 en sont des exemples connus. Cet outil entièrement exécuté dans le navigateur convertit du texte UTF-8 ou des octets hexadécimaux exacts avec l’alphabet Bitcoin, Ripple ou Flickr, et refuse tout caractère absent de l’alphabet choisi.

Comment encoder et décoder Base58

  1. 1

    Entrez des octets ou une chaîne Base58

    La direction d'encodage accepte le texte hexadécimal ou brut ; la direction de décodage accepte Base58.

  2. 2

    Choisissez l'alphabet si nécessaire

    Par défaut, c'est le Base58 de Bitcoin ; des variantes Ripple et Flickr sont disponibles pour la compatibilité.

  3. 3

    Exécutez la conversion

    Base58 ne se divise pas en groupes de 5 ou 6 bits ; il est traité comme un seul entier big-endian, divisé par 58 de manière répétée.

  4. 4

    Copiez le résultat

    Les chaînes encodées conservent les octets nuls en tête sous forme de caractères `1` (le glyphe zéro dans l'alphabet de Bitcoin).

L’alphabet Base58 de Bitcoin

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Remarquez ce qui manque : 0, O, I, l. Le premier caractère de l’alphabet est 1, qui représente l’entier 0.

Comment cela fonctionne réellement

Contrairement à Base64 qui divise les bits en groupes fixes, Base58 traite l’ensemble de la chaîne d’octets comme un seul entier big-endian N et l’exprime en base 58 :

result = []
while N > 0:
    result.prepend(alphabet[N mod 58])
    N = N / 58
for each leading zero byte in input:
    result.prepend(alphabet[0])  # c'est-à-dire '1'

C’est pourquoi l’encodage Base58 n’est pas trivial à diffuser, vous avez besoin du nombre entier avant de pouvoir émettre un caractère.

Base58 vs Base58Check

La charge Base58Check typique d’une ancienne adresse P2PKH compte 25 octets : 1 octet de version, 20 octets de hachage et 4 octets de somme de contrôle. La somme correspond aux 4 premiers octets du double SHA-256 de la version et du hachage. L’encodage Base58 de cette charge complète produit la chaîne d’adresse connue.

Cet outil convertit uniquement le Base58 simple. Utilisez un validateur Base58Check dédié pour vérifier la version et la somme de contrôle d’une adresse.

Variantes d’alphabet

Variante Où c’est utilisé Différences par rapport à Bitcoin
Bitcoin Adresses BTC, CIDv0 IPFS Référence
Ripple Adresses XRP Positions échangées
Flickr URLs de photos courtes Minuscules avant majuscules

Pourquoi ne pas simplement utiliser Base64 ?

Base64 n’a pas de changement de longueur entre le binaire et le texte encodé (4 caractères par 3 octets), ce qui est efficace. Base58 a un léger surcoût variable mais pas de caractères ambigus, ce qui est ce que vous voulez lorsque quelqu’un doit copier une adresse à la main ou la lire au téléphone.

Questions fréquentes

Pas universellement. Base58 est meilleur lorsque les humains manipulent la chaîne ; Base64 est meilleur lorsque les machines la transportent. Base64 encode 6 bits par caractère contre environ 5,86 pour Base58, donc Base64 est légèrement plus compact.

Base58 encode un grand entier, donc la longueur varie d’un caractère ou deux selon les bits de poids fort. Les adresses P2PKH typiques font 34 caractères mais 33 est possible.

L’outil peut décoder la chaîne en octets bruts ; choisissez la sortie hexadécimale pour afficher sans perte tous les octets. Il ne vérifie ni la version ni la somme de contrôle. Un décodage réussi ne prouve donc pas que l’adresse est valide ; utilisez un validateur Base58Check pour cela.

Oui. Chaque octet nul au début de l’entrée devient un caractère 1 dans la sortie, ce qui explique pourquoi les adresses Bitcoin commencent par 1.

Outils similaires