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

Преобразуйте текст, шестнадцатеричные байты или файлы в Base32 и обратно. Выберите алфавит RFC 4648, Base32hex, Crockford или z-base-32 и настройте дополнение и регистр букв.

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Выберите «Кодировать», чтобы перевести текст в Base32, или «Декодировать», чтобы получить текст из Base32.
  2. Выберите «Вариант». По умолчанию используется RFC 4648: именно его применяют для секретов TOTP и в большинстве библиотек.
  3. Введите или вставьте входные данные либо откройте файл. Результат обновляется по мере ввода.
  4. Скопируйте результат или скачайте его в виде файла.

Что такое Base32?

Base32 представляет двоичные данные с помощью 32 печатных символов. Каждый символ несёт 5 бит, поэтому каждые 5 входных байтов превращаются в 8 выходных символов. Результат примерно на 60% больше исходных данных — это больше, чем у Base64, зато в алфавите нет строчных букв и легко путаемых символов.

Стандартный алфавит из RFC 4648 состоит из букв A-Z и цифр 2-7. Цифры 0, 1, 8 и 9 исключены, чтобы их нельзя было спутать с буквами O, I и B. Если длина входных данных не кратна 5 байтам, результат дополняется знаками = до длины, кратной 8 символам.

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

  • Двухфакторная аутентификация. Секреты TOTP и HOTP в приложениях-аутентификаторах (значение secret= в ссылке otpauth://) — это строки Base32.
  • Системы, не учитывающие регистр. Алфавит использует только один регистр, поэтому Base32 без потерь проходит через файловые системы, метки DNS и адреса электронной почты, которые не различают регистр.
  • Коды, которые вводят люди. В лицензионных ключах, onion-адресах и коротких идентификаторах применяют Base32, потому что такие строки проще продиктовать и набрать.

Если размер важнее удобочитаемости, компактнее будет Base64. Если нужны короткие идентификаторы без путаницы в символах, сравните Crockford Base32 и Base58.

Варианты Base32

ВариантАлфавитТипичное применение
RFC 4648A-Z 2-7Секреты TOTP, универсальное применение
Base32hex0-9 A-VПорядок сортировки совпадает с исходными байтами, DNSSEC NSEC3
Crockford0-9 A-Z без I, L, O, UУдобочитаемые идентификаторы, ULID
z-base-32нижний регистр, переставленный алфавитКлючи, удобные для людей, OpenPGP WKD, ZRTP

Base32 в коде

# Python
import base64
base64.b32encode(b'hello')        # кодирование
base64.b32decode('NBSWY3DP')      # декодирование

// В Node.js нет встроенного Base32; используйте пакет, например "hi-base32"
// Go (import "encoding/base32")
base32.StdEncoding.EncodeToString(data)

Спецификация

АлфавитA-Z 2-7
Размер результата8 символов на каждые 5 байт (160%)
Дополнение= до длины, кратной 8 символам
СтандартRFC 4648, раздел 6
Учёт регистраНет

Примеры

Исходные данные (UTF-8)Результат
Hello, World!JBSWY3DPFQQFO33SNRSCC===
Base64.isIJQXGZJWGQXGS4Y=
你好4S62BZNFXU======

Часто задаваемые вопросы

Учитывает ли Base32 регистр?

Алфавит RFC 4648 определён в верхнем регистре, но этот декодер принимает и строчные буквы. Если нужен результат в нижнем регистре, включите параметр «Нижний регистр».

Почему моя строка Base32 заканчивается знаками =?

Знаки равенства — это дополнение, которое заполняет последний блок до 8 символов. Многие системы, включая большинство приложений TOTP, принимают Base32 без дополнения. Чтобы убрать его, отключите «Дополнение».

Насколько Base32 больше исходных данных?

Каждые 5 байтов превращаются в 8 символов, поэтому результат Base32 примерно в 1,6 раза больше входных данных. У Base64 это примерно 1,33 раза.

Можно ли декодировать секрет TOTP этим инструментом?

Да. Вставьте секрет на вкладке «Декодировать» и выберите вывод в Hex, чтобы увидеть исходные байты ключа. Пробелы в секрете игнорируются.