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

Base64 в Base32 для секретов TOTP

Вставьте секрет в Base64 и получите те же байты в Base32 по RFC 4648 для приложения-аутентификатора или ссылки otpauth://. Снимите галочку дополнения, и результат можно сразу подставить в параметр secret=.

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

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

Как перевести Base64 в Base32

  1. Вставьте Base64 в поле Ввод · Base64. URL-safe символы (-, _), отсутствующее дополнение и переносы строк не мешают.
  2. Результат появится в поле Результат · Base32 (RFC 4648).
  3. Для ссылки otpauth:// или приложения-аутентификатора снимите галочку Дополнение (=) под результатом.
  4. Нажмите Скопировать результат. Кнопка Base32 (RFC 4648) → Base64 в переключателе направления конвертирует в обратную сторону, как и страница Base32 в Base64.

Сами байты не меняются: ключ на 20 байт остаётся ключом на 20 байт, и это видно по счётчику Байты под инструментом.

Примеры

Base64Base32Байты
iEwO+V01Llzjb4MxBUtgEuCNW8o=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20
iEwO-V01Llzjb4MxBUtgEuCNW8oRBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20, URL-safe ввод без дополнения
MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ20, тестовый секрет из RFC 6238
SGVsbG8h3q2+7w==JBSWY3DPEHPK3PXP10

Base64 и Base32 в первых строках таблицы совсем не похожи друг на друга, и так и должно быть: Base64 кодирует 6 бит на символ, а Base32 – 5, так что символы никогда не совпадают по позициям.

Главная ошибка здесь: закодировать символы Base64 как текст. Если вставить iEwO+V01Llzjb4MxBUtgEuCNW8o= в кодировщик «текст в Base32», получится NFCXOTZLKYYDCTDM…, корректный Base32 для строки из 28 символов, но не ваш ключ. Коды аутентификатора с ним никогда не совпадут с серверными.

Настройка TOTP из секрета в Base64

Серверный код часто хранит общий секрет в Base64 или генерирует его командой вроде этой:

openssl rand -base64 20

Чтобы добавить его в приложение-аутентификатор, переведите секрет здесь и соберите ключевой URI:

otpauth://totp/Example:alice@example.com?secret=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K&issuer=Example

algorithm, digits и period можно добавить параметрами; без них приложения считают, что это SHA-1, 6 цифр и 30 секунд. Превратите ссылку в QR-код любым локальным инструментом или дайте пользователю набрать секрет Base32 вручную. В секрете те же байты, которые сервер передаёт в HMAC, поэтому коды совпадут без изменений на сервере.

Если нужен новый секрет, а не существующий, сгенерируйте 20 случайных байтов в Base64 генератором случайного Base64 (пресет «Свой вариант») и переведите их здесь.

Длина для типичных размеров ключа

КлючBase64Base32 без дополненияBase32 с =
10 байт (80 бит)161616
16 байт (128 бит)242632
20 байт (160 бит)283232
32 байта (256 бит)445256

Размеры, кратные 5 байтам, например 10 и 20, дают Base32 вообще без дополнения.

То же преобразование в Python

import base64

secret_b64 = "iEwO+V01Llzjb4MxBUtgEuCNW8o="
base64.b32encode(base64.b64decode(secret_b64)).decode().rstrip("=")
# 'RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K'

Для URL-safe ввода используйте base64.urlsafe_b64decode и сначала верните дополнение =, если его срезали. Подробнее об этом в статье Base64 в Python.

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

Почему приложениям-аутентификаторам нужен Base32, а не Base64?

Формат ключевого URI otpauth://, который приложения читают из QR-кодов, определяет секрет как Base32. Кроме того, его должно быть легко набрать вручную, если QR-код не сканируется, а в Base32 нет +, / и смешанного регистра, в которых легко ошибиться.

Нужно ли дополнение = в секрете Base32?

В ссылке otpauth:// не нужно: по формату ключевого URI дополнение опускают. Снимите галочку Дополнение (=). Впрочем, секрет на 20 байт занимает 32 символа, и дополнения у него нет в любом случае.

Какой длины должен быть секрет TOTP?

RFC 4226 требует не меньше 128 бит и рекомендует 160 бит, то есть 20 байт: 28 символов Base64 или 32 символа Base32.

Не опасно ли переводить секрет в Base32?

Кодирование не добавляет защиты и не убирает её: любой, у кого есть строка в любом из двух видов, может генерировать ваши коды. Риск в том, куда вы её вставляете. Эта страница конвертирует секрет в браузере, а её политика безопасности контента (CSP) блокирует сетевые запросы, кроме счётчика просмотров Cloudflare.