Comment convertir du Base64 en Base58
- Collez la chaîne Base64 dans Entrée · Base64. Les caractères standard comme URL-safe fonctionnent, tout comme un remplissage
=manquant, des sauts de ligne et un préfixedata:. - Lisez le résultat dans Sortie · Base58.
- Choisissez l’Alphabet sous la sortie si la cible n’est pas du Base58 de style Bitcoin. Flickr et Ripple ordonnent les mêmes 58 caractères différemment.
- Utilisez Copier la sortie, ou cliquez sur Base58 → Base64 dans le sélecteur de sens pour revenir en arrière. La page Base58 en Base64 démarre dans ce sens.
La conversion passe par les octets bruts : le Base64 est décodé, puis les octets sont encodés en Base58. Rien n’est ajouté ni retiré : une clé de 32 octets reste une clé de 32 octets.
Exemples
| Base64 | Base58 | Ce que c’est |
|---|---|---|
SGVsbG8= | 9Ajdvzr | Le texte Hello |
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= | 11111111111111111111111111111111 | 32 octets nuls : le System Program de Solana |
Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk= | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | ID du programme SPL Token de Solana |
Bt324ddloZPZy-FGzut5rBy0he1fWzeROoz1hX7_AKk | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | La même clé en Base64 URL-safe sans remplissage |
Les deux dernières lignes sont les mêmes 32 octets écrits de deux façons en Base64 : elles donnent donc le même Base58.
Construire un CIDv0 IPFS à partir d’une empreinte SHA-256
Un CIDv0 est le Base58 d’un multihash : les octets 12 (SHA-256) et 20 (longueur de 32 octets), puis l’empreinte. Beaucoup d’outils affichent une empreinte SHA-256 en Base64, et convertir celle-ci seule ne donne pas une chaîne Qm… :
| Octets | Base64 | Base58 |
|---|---|---|
| Empreinte seule | JiqGtnblhp7dXRrfj/0B1inDFUv96uz8jPoNkOCILYo= | 3Zz6yE7jDUVDb6doCEWrK58or4X2TmTLBiJeyWY4NHvq |
12 20 + empreinte | EiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig== | QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq |
Le EiA au début de la deuxième chaîne Base64 est l’en-tête 12 20 encodé : un multihash en Base64 se reconnaît donc facilement. Pour ajouter l’en-tête vous-même, convertissez l’empreinte avec Base64 en hex, placez 1220 devant et encodez le hex sur la page Base58 avec De réglé sur Hex.
Cela n’aide que si vous avez déjà l’empreinte calculée par IPFS. IPFS hache le bloc UnixFS d’un fichier, pas le fichier brut : lancer sha256sum sur un fichier ne reproduit donc pas son CID.
Longueur : Base64 contre Base58
| Octets | Base64 | Base58 (données aléatoires) |
|---|---|---|
| 16 | 24 | 21 ou 22 |
| 20 | 28 | 26 à 28 |
| 32 | 44 | 43 ou 44 |
| 64 | 88 | 87 ou 88 |
La longueur en Base64 ne dépend que du nombre d’octets. En Base58, elle dépend aussi de la valeur, ce qui explique que les adresses Solana varient entre 32 et 44 caractères. Ne validez pas du Base58 sur sa longueur exacte.
La même conversion en JavaScript
Node.js décode le Base64 nativement ; la partie Base58 nécessite un BigInt :
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
function base64ToBase58(b64) {
const bytes = Buffer.from(b64, "base64");
let n = BigInt("0x" + (bytes.toString("hex") || "0"));
let out = "";
while (n > 0n) {
out = ALPHABET[Number(n % 58n)] + out;
n /= 58n;
}
for (const b of bytes) {
if (b !== 0) break;
out = "1" + out;
}
return out;
}
base64ToBase58("Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=");
// 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
Buffer.from(…, "base64") accepte aussi une entrée URL-safe. La fonction s’appuie sur le Buffer de Node ; Base64 en Node.js l’explique plus en détail.
FAQ
Peut-on convertir du Base64 en Base58 sans passer par les octets ?
Pas caractère par caractère. Base64 traite des groupes fixes de 6 bits, alors que Base58 considère tous les octets comme un seul nombre : tout convertisseur, cette page comprise, décode donc d’abord le Base64 en octets, puis réencode ces octets.
Pourquoi le résultat Base58 est-il parfois plus court que le Base64 ?
Base58 n’a pas de remplissage, et chaque octet nul en tête ne coûte qu’un caractère. 32 octets font toujours 44 caractères Base64 (avec =), mais 43 ou 44 en Base58, et seulement 32 quand tous les octets sont nuls.
Quel alphabet Base58 Solana utilise-t-il ?
L’alphabet Bitcoin, celui par défaut ici. Flickr et Ripple sont disponibles sous Alphabet si vous en avez besoin.
Pourquoi ma sortie Base58 ne commence-t-elle pas par Qm ?
Qm vient de l’en-tête multihash de 2 octets 12 20. Si votre Base64 ne contient que l’empreinte SHA-256 de 32 octets, ajoutez d’abord ces deux octets devant, comme décrit sur cette page.