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

Декодер Base58: Base58 в hex и текст

Вставьте строку Base58 и посмотрите на байты внутри в hex. Ведущие 1 возвращаются нулевыми байтами, а вывод при необходимости можно переключить на текст или Base64.

Бесплатно без регистрации и ограничений Локально ничего не загружается Вывод в hex текст и Base64 одним щелчком Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

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

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

  1. Вставьте строку в поле Ввод · Base58. Пробелы и переносы строк игнорируются.
  2. Байты появятся в поле Результат · Hex. Под результатом можно переключить Регистр, добавить Разделитель, например пробел или :, или разбить дамп по 16 или 32 байта опцией Байтов в строке.
  3. Если у строки не алфавит Bitcoin, поменяйте Алфавит под полем ввода на Flickr или Ripple.
  4. Для других представлений поменяйте меню В: Текст, если в данных была строка, Base64 – для API или конфига. Для этой конвертации есть отдельная страница Base58 в Base64.
  5. Нажмите Скопировать результат или Скачать, чтобы забрать hex, либо Сохранить байты, чтобы получить декодированные байты файлом.

Во что декодируются типичные строки Base58

Base58Байты (hex)Что это
1111111111111111111111111111111132 × 00Solana System Program (32-байтный ключ из нулей)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA06ddf6e1d765…7eff00a9 (32 байта)ID программы Solana SPL Token
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa00 62e907b1…ebb88f18 c29b7d93Адрес генезис-блока Bitcoin: версия, хеш, контрольная сумма
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq1220 262a86b6…e0882d8aIPFS CIDv0: заголовок multihash SHA-256, 32-байтный хеш
9Ajdvzr48656c6c6fТекст Hello

По байтам видна структура. 25 байт, начинающихся с 00 или 05, означают адрес Bitcoin с ещё не отрезанной контрольной суммой; 34 байта с началом 1220 указывают на CIDv0, а 32 байта без видимой структуры, скорее всего, окажутся открытым ключом.

Ведущие 1 означают нулевые байты

В Base58 каждая ведущая 1 декодируется в один байт 00, а остаток строки декодируется как одно число. Этот декодер сохраняет такие байты, поэтому адрес генезис-блока выше даёт 25 байт, а не 24. Декодер, который переводит только число, их теряет. Первым это выдаёт ключ на один байт короче нужного или контрольная сумма, которая никогда не сходится.

Правило работает и в обратную сторону: 1111 даёт четыре нулевых байта, а 2 – одиночный байт 01.

Когда декодирование не удаётся

  • Неожиданный символ «0», «O», «I» или «l». Этих четырёх нет в алфавите Base58: их исключили, потому что они похожи на другие символы. Сообщение указывает позицию; обычно символ перепутали при переписывании.
  • Неожиданный +, / или =. Строка в Base64. Воспользуйтесь декодером Base64.
  • Ввод начинается с bc1. Это адрес SegWit в Bech32, у этой кодировки свои контрольная сумма и алфавит. Здесь он либо не декодируется, либо даёт бессмысленные байты.
  • Hex правильный, но на 4 байта длиннее. Вы декодировали значение Base58Check как обычный Base58. Последние 4 байта занимает контрольная сумма; отбросьте их или используйте Base58Check.
  • Ввод больше 64 КБ. Base58 рассматривает весь ввод как одно число, поэтому инструмент останавливается на 64 КБ, чтобы страница не зависала. Реальные значения Base58 укладываются в несколько десятков символов.

Base58 в hex на JavaScript

С BigInt конвертация получается короткой. Работает и в браузерах, и в Node.js:

const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

function base58ToHex(s) {
  let n = 0n;
  for (const ch of s) {
    const v = ALPHABET.indexOf(ch);
    if (v < 0) throw new Error(`not Base58: ${ch}`);
    n = n * 58n + BigInt(v);
  }
  let hex = n === 0n ? "" : n.toString(16);
  if (hex.length % 2) hex = "0" + hex;
  const zeros = s.length - s.replace(/^1+/, "").length;
  return "00".repeat(zeros) + hex;
}

base58ToHex("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
// '0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93'

Работа с байтами в JavaScript разобрана на странице про JavaScript.

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

Как декодировать адрес Solana?

Вставьте его сюда: в hex вы увидите 32-байтный открытый ключ Ed25519. Адрес System Program 11111111111111111111111111111111 декодируется в 32 нулевых байта: на нём хорошо видно правило ведущих нулей.

Почему мой адрес Bitcoin декодируется в 25 байт?

Классический адрес записан в Base58Check: 1 байт версии, 20-байтный хеш открытого ключа и 4-байтная контрольная сумма. Обычное декодирование Base58 возвращает все 25 байт. Декодер Base58Check проверит контрольную сумму и отрежет её за вас.

Почему декодер отвергает мою строку?

В Base58 нет 0, O, I и l, так что любой из них обычно означает опечатку или другую кодировку. Строка с +, / или = записана в Base64, а 0x… выдаёт hex.

Как перевести Base58 в hex на JavaScript?

Накапливайте BigInt цифра за цифрой, выведите его через toString(16), а затем добавьте 00 за каждую ведущую 1. Сниппет на этой странице показывает функцию целиком.