Загрузить файл
  1. base64hub
  2. Другие BaseN
  3. Base58

Кодировщик и декодер Base58 онлайн

Введите текст и получите его Base58 с алфавитом Bitcoin, тем самым, что используют адреса Bitcoin, IPFS и Solana. Алфавиты Flickr и Ripple включаются в один щелчок, а ведущие нулевые байты не теряются ни при кодировании, ни при декодировании.

Бесплатно без регистрации и ограничений Локально ничего не загружается 3 алфавита Bitcoin, Flickr, Ripple Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как закодировать в Base58

  1. Введите или вставьте текст в поле Ввод · Текст. Строка Base58 появляется в поле Результат · Base58 прямо по мере набора.
  2. Выберите Алфавит под результатом: Bitcoin (по умолчанию, его же используют IPFS и Solana), Flickr или Ripple.
  3. Чтобы закодировать сырые байты, а не текст, выберите в меню Из вариант Hex или Base64 и вставьте байты в этой форме. Открытый ключ или хеш почти всегда хранится как байты, а не как текст.
  4. Чтобы декодировать, нажмите Base58 → Текст в переключателе направления или откройте декодер Base58, который показывает байты в hex.

Как работает кодирование Base58

Base58 не режет ввод на фиксированные группы бит, как Base64. Он читает все байты как одно большое число в порядке big-endian, записывает это число по основанию 58 и добавляет по одной 1 за каждый ведущий нулевой байт. Поэтому изменение одного байта может поменять всю строку, а длина зависит от значения, а не только от числа байтов.

Обработка данных как одного числа быстро дорожает с ростом размера, поэтому инструмент ограничивает ввод для Base58 64 КБ. Это намного больше, чем нужно любому ключу, хешу или адресу.

Три алфавита Base58

Все три используют одни и те же 58 символов (цифры и буквы без 0, O, I, l), но в разном порядке:

АлфавитНачинается сHello0x00 0x00 0x01
Bitcoin123456789ABC…9Ajdvzr112
Flickr123456789abc…9aJCVZR112
Ripplerpshnaf39wBU…9wjdvzirrp

Flickr меняет местами заглавные и строчные: такой алфавит Flickr использовал для коротких ссылок на фотографии. Алфавит Ripple начинается с r, поэтому адреса XRP Ledger с нулевым байтом версии начинаются с r, как адреса Bitcoin – с 1. Декодирование с неверным алфавитом обычно проходит без ошибки и даёт другие байты, так что, если значение не сходится, сначала проверьте алфавит.

Ведущие нули и префикс 1

Поскольку Base58 рассматривает данные как число, нулевые байты в начале исчезли бы. Формат сохраняет их, записывая по одной 1 на каждый нулевой байт:

Байты (hex)Base58
001
00 0011
00 0112
ff5Q
31 × 00, затем ff11111111111111111111111111111115Q
32 × 0011111111111111111111111111111111

В последней строке настоящий адрес: тридцать две 1 образуют адрес Solana System Program, чей открытый ключ состоит из 32 нулевых байтов. Именно на ведущих нулях чаще всего ошибается самописный код Base58, а кодировщик, который их теряет, выдаёт строки, декодирующиеся в меньшее число байтов.

Где используется Base58

  • Адреса Bitcoin и ключи WIF. Классические адреса (1…, 3…) и закрытые ключи WIF (5…, K…, L…) записаны в Base58Check, то есть в Base58 с байтом версии и контрольной суммой. Адреса Bech32 (bc1…) используют другую кодировку.
  • IPFS CIDv0. Идентификаторы Qm… кодируют обычным Base58 34-байтный multihash: 12 (SHA-256), 20 (длина 32 байта) и сам хеш. Заголовок 12 20 и заставляет каждый CIDv0 начинаться с Qm.
  • Solana. В адресах и открытых ключах Base58 кодирует 32 байта (от 32 до 44 символов), в подписях транзакций – 64 байта (до 88 символов).

Base58 в Python

В стандартной библиотеке Python нет Base58. Алгоритм достаточно короткий, чтобы написать его самому, и эта версия учитывает ведущие нули:

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def b58encode(data: bytes) -> str:
    n = int.from_bytes(data, "big")
    out = ""
    while n:
        n, r = divmod(n, 58)
        out = ALPHABET[r] + out
    zeros = len(data) - len(data.lstrip(b"\0"))
    return "1" * zeros + out

b58encode(b"Hello")           # '9Ajdvzr'
b58encode(bytes(32))          # '11111111111111111111111111111111'

В рабочем коде удобнее поддерживаемый пакет вроде base58 на PyPI, он покрывает и Base58Check. Общие приёмы кодирования в Python смотрите на странице про Python.

Вопросы и ответы

Каких символов нет в Base58?

Алфавит Base58 получается из Base62 без четырёх похожих символов: 0 (ноль), O (заглавная o), I (заглавная i) и l (строчная L). В нём также нет +, / и =, поэтому строку Base58 можно выделить двойным щелчком как одно слово и вставить в URL без экранирования.

Почему результат Base58 начинается с 1?

Каждая 1 обозначает один ведущий нулевой байт ввода. Обычное число эти нули потеряло бы, поэтому Base58 записывает их явно. Адреса Bitcoin начинаются с 1, потому что их байт версии равен 0x00.

Base58 и Base58Check – это одно и то же?

Нет. Base58Check кодирует в Base58 полезную нагрузку вместе с 4-байтной контрольной суммой из двойного SHA-256. Его используют адреса Bitcoin и закрытые ключи WIF, а адреса Solana и IPFS CIDv0 записаны в обычном Base58. Для формы с контрольной суммой есть инструмент Base58Check.

Насколько Base58 длиннее ввода?

Для случайных данных примерно на 37% (log 256 / log 58 ≈ 1,366), чуть больше, чем 33% у Base64. Точная длина зависит от значения: 32 случайных байта дают 43 или 44 символа, а 32 нулевых байта – 32 единицы.