Введение

Бинарная схема кодирования текста с использованием 32 символов. Base32 — это метод кодирования, основанный на системе счисления по основанию 32. Он использует алфавит из 32 символов, каждый из которых представляет собой уникальную комбинацию из 5 бит (2^5 = 32). Поскольку Base32 не получил широкого распространения, вопрос о нотации – какие символы использовать для представления 32 символов – не имеет столь четкого решения, как в случае более известных систем счисления (например, шестнадцатеричной), хотя существуют RFC и неофициальные, де-факто стандарты. Один из способов представления чисел Base32 в удобочитаемом виде – использование цифр от 0 до 9, за которыми следуют двадцать две заглавные буквы от A до V. Однако в различных контекстах используются и другие варианты. Исторически, код Бодо можно рассматривать как модифицированный (с состоянием) код Base32. В данной статье рассматривается использование Base32 для представления байтовых строк, а не беззнаковых целых чисел, подобно тому, как это работает в Base64.

RFC 4648 кодировки

В октябре 2006 года был предложен проект интернет-стандарта, описывающего кодировки base16, base32 и base64. Он включает в себя две схемы для base32, но рекомендует использовать одну из них вместо другой. Более того, вне зависимости от предшествующих практик, в нем рекомендуется называть base32 только алфавит, определенный в разделе 6, а другой похожий алфавит из раздела 7 – base32hex. Не все согласны с этими рекомендациями. При использовании систем, именуемых base32, следует проявлять осторожность, так как эти системы могут быть base32 согласно RFC 4648 §6, или согласно §7 (возможно, игнорируя отмену RFC более простого названия для последней), или же представлять собой еще один вариант кодирования, о котором подробнее рассказано ниже.

Альтернативные схемы кодирования

Изменение алфавита Base32, во всех альтернативных стандартах используются схожие сочетания буквенно-цифровых символов.

Электрологика

Ранняя форма системы кодирования на основе 32 использовалась программистами, работавшими над Electrologica X1, для представления машинных адресов. "Разряды" представлялись десятичными числами от 0 до 31. Например, 12 16 представляло машинный адрес 400 (= 12 × 32 + 16).

Видеоигры

До того, как NVRAM стала повсеместной, несколько видеоигр для платформ Nintendo использовали систему счисления с основанием 31 для паролей. Эти системы исключали гласные буквы (за исключением Y), чтобы предотвратить случайное формирование нецензурного пароля в игре. Таким образом, символы обычно представляли собой незначительные вариации следующего набора: 0–9, B, C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Y, Z и некоторые знаки препинания. Среди игр, использующих такую систему, можно назвать Mario Is Missing!, Mario's Time Machine, Tetris Blast и The Lord of the Rings (Super NES).

Реализация программного обеспечения

Программы Base32 подходят для кодирования произвольных байтовых данных с использованием ограниченного набора символов, которые удобно использовать как людям, так и компьютерам. В реализациях Base32 применяется набор символов, состоящий как минимум из 32 различных символов (иногда добавляется 33-й символ для дополнения), а также алгоритм для кодирования произвольных последовательностей 8-битных байтов в алфавит Base32. Поскольку для представления каждого 8-битного входного байта требуется более одного 5-битного символа Base32, определяются требования к допустимой длине строк Base32 (которая должна быть кратна 40 битам, что обуславливает необходимость дополнения). В отличие от этого, тесно связанная система Base64 использует набор из 64 символов. Доступны реализации Base32 на языках C/C++, Perl, Java, JavaScript, Python, Go и Ruby.