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

Кодировщик и декодер Base58Check

Вставьте байт версии и полезную нагрузку в hex и получите строку Base58Check с 4-байтной контрольной суммой. Смените направление, чтобы декодировать адрес или ключ WIF: контрольная сумма проверяется, а полезная нагрузка возвращается в hex.

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

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

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

Чтобы закодировать:

  1. Вставьте hex в поле Ввод · Hex: сначала байт версии, затем полезную нагрузку. Пробелы, двоеточия и префиксы 0x допускаются.
  2. Строка появится в поле Результат · Base58Check. Инструмент вычисляет контрольную сумму и дописывает её перед кодированием.
  3. Оставьте Алфавит на Bitcoin для Bitcoin и большинства форков.

Чтобы декодировать, нажмите Base58Check → Hex в переключателе направления и вставьте адрес или ключ. Декодер конвертирует строку, заново вычисляет контрольную сумму и возвращает полезную нагрузку (по-прежнему начинающуюся с байта версии), только если совпали все 4 байта суммы. Один неверно набранный символ даёт сообщение «контрольная сумма не совпадает: в строке опечатка или она повреждена».

Что Base58Check добавляет к Base58

У обычного Base58 нет обнаружения ошибок: опечатка даёт другую, но столь же корректную строку. Base58Check исправляет это двумя добавками:

version (1 byte) | payload | first 4 bytes of SHA-256(SHA-256(version | payload))

Затем всё целиком кодируется в Base58, так что ведущие нулевые байты становятся 1. Байт версии задаёт сеть и тип данных, а поскольку он стоит в начале числа, он заодно фиксирует первый символ результата.

Байты версии и префиксы

Один и тот же 20-байтный хеш, 62e907b15cbf27d5425399ebf6f0fb50ebb88f18, с разными байтами версии:

ВерсияЗначениеПервый символРезультат
00Адрес Bitcoin P2PKH11A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
05Адрес Bitcoin P2SH33Ai1JZ8pdJb2ksieUV8FsxSNVJCpoPi8W6
6fАдрес P2PKH в testnetm или nmpXwg4jMtRhuSpVq4xS3HFHmCmWp9NyGKt
c4Адрес P2SH в testnet22N2GDNJ4rEm6NxfMC9ck8VuRdheQzXWaNZv

В первой строке адрес, на который пришла награда за генезис-блок Bitcoin. Остальные строки лишь иллюстрируют байт версии: если обернуть хеш открытого ключа байтом версии P2SH, рабочего адреса P2SH не получится, потому что P2SH хеширует скрипт.

Закрытые ключи WIF

Wallet Import Format кодирует в Base58Check байт версии 80 и 32-байтный закрытый ключ. Завершающий байт 01 помечает ключ, открытый ключ которого используется в сжатой форме. Известный пример ключа из Bitcoin wiki:

Hex на входеBase58Check
80 + 0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ
то же + 01KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617

Несжатые ключи WIF начинаются с 5, сжатые – с K или L. Этот пример ключа общедоступен; никогда не используйте его для реальных средств.

Base58Check в Python

Для контрольной суммы хватает двух вызовов SHA-256 из стандартной библиотеки. Вместе с небольшим кодировщиком Base58 получается так:

import hashlib

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

def b58check(payload: bytes) -> str:
    checksum = hashlib.sha256(hashlib.sha256(payload).digest()).digest()[:4]
    return b58encode(payload + checksum)

b58check(bytes.fromhex("0062e907b15cbf27d5425399ebf6f0fb50ebb88f18"))
# '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa'

Чтобы проверить строку в коде, декодируйте её из Base58, отделите последние 4 байта и сравните их с двойным хешем остального. Приёмы работы с байтами в Python есть на странице про Python.

Типичные проблемы

  • Контрольная сумма не совпадает. В строке опечатка, она обрезана или это обычный Base58 без контрольной суммы (адреса Solana и хеши IPFS записаны в обычном Base58, для них есть декодер Base58).
  • «Слишком коротко, чтобы вместить 4-байтовую контрольную сумму». В декодированном значении меньше 4 байт, значит, это не Base58Check.
  • Неожиданный символ «0», «O», «I» или «l». Его нет в алфавите Base58; проверьте, правильно ли переписана строка.
  • После кодирования не тот первый символ. Проверьте байт версии. Без него 20-байтный хеш обычно кодируется в строку, которая не начинается с 1.

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

Как вычисляется контрольная сумма Base58Check?

Полезная нагрузка (вместе с байтом версии) хешируется SHA-256, результат ещё раз хешируется SHA-256, и берутся первые 4 байта. Эти 4 байта дописываются в конец перед кодированием в Base58.

Если контрольная сумма верна, на адрес безопасно отправлять средства?

Это значит лишь, что строку не набрали с ошибкой: случайная опечатка проходит проверку с вероятностью примерно 1 к 4,3 миллиарда. О том, кто контролирует адрес и принадлежит ли он той сети, о которой вы думаете, это ничего не говорит.

Может ли Base58Check декодировать адреса bc1?

Нет. Адреса, начинающиеся с bc1, записаны в Bech32 или Bech32m (SegWit и Taproot), у них другой алфавит и другая контрольная сумма.

Стоит ли вставлять сюда настоящий закрытый ключ?

Конвертация идёт в вашем браузере, и страница блокирует все сетевые запросы, кроме счётчика просмотров Cloudflare, но ключ WIF управляет средствами. Для всего, что имеет ценность, используйте тестовый ключ или компьютер без сети.