Для чего нужен Base32

Base32 решает ту же основную задачу, что и Base64: он переписывает произвольные байты с помощью небольшого набора печатаемых символов, чтобы они пережили каналы, принимающие только текст. Что его отличает, так это форма его алфавита. Base32 использует только 26 заглавных букв A-Z и цифры 2-7, всего 32 символа. Он намеренно исключает 0, 1 и 8 и нечувствителен к регистру. Это делает его трудным для неверного прочтения и безопасным для набора, диктовки по телефону или печати на этикетке без путаницы O с 0 или l с 1.

Цена этой устойчивости — размер. Там где Base64 упаковывает данные в соотношении четыре символа на три байта, Base32 менее плотный, поэтому его вывод заметно длиннее для того же ввода.

Как работает группировка по 5 бит

Base64 работает группами по 6 бит, потому что 2⁶ = 64. Base32 работает группами по 5 бит, потому что 2⁵ = 32. Каждый 5-битный фрагмент — это число от 0 до 31, и каждое значение соответствует символу алфавита (A=0 до Z=25, затем 2=26 до 7=31).

Неудобство в том, что 5 не делит 8 нацело. 24-битное окно Base64 (3 байта как 4 группы) укладывается ровно; наименьшее ровное окно Base32 — это 40 бит, то есть 5 байт, закодированных как 8 символов. Поэтому Base32 читает ввод по пять байт за раз и выдаёт восемь символов на блок.

Дополнение до блока из 8 символов

Поскольку естественный блок — это восемь символов, когда ввод не заканчивается на границе 5 байт, кодировщик дополняет последний блок символами = до восьми символов. Допустимы только определённые остаточные размеры: последний блок длиной 2, 4, 5 или 7 до дополнения соответствует целому числу байт, тогда как длины 1, 3 и 6 не могут и сигнализируют о повреждённой строке. Как и в Base64, = не является данными; он лишь восстанавливает длину блока, чтобы декодировщик мог вернуть точные исходные байты.

Возьмём ввод foobar. Его кодировка Base32 — это MZXW6YTBOI======: восемь символов данных, за которыми следуют шесть символов дополнения, завершающих второй блок. Декодируйте его, и шесть исходных байт вернутся.

Где вы с этим столкнётесь

Base32 появляется там, где человек напрямую обращается с закодированным значением. Двухфакторные секреты для и передаются как строки Base32, поэтому ключ настройки приложения-аутентификатора целиком состоит из заглавных букв и цифр от 2 до 7. Onion-адреса — это открытые ключи, закодированные в Base32. Некоторые DNS-записи и системы синхронизации файлов используют его по той же причине: значение может быть прочитано вслух, набрано вручную или сохранено без учёта регистра, и Base32 терпит все три.

Когда строка целиком состоит из заглавных букв A-Z и 2-7, возможно заканчиваясь на =, Base32 — хорошее предположение.

Попробуйте

Выберите Base32 в инструменте codec, чтобы закодировать текст в Base32 или декодировать строку Base32, всё в вашем браузере. Он терпит ввод в нижнем регистре и отсутствующее дополнение и отмечает результат, который является двоичным, а не читаемым текстом.