Jump to content

База32

(Перенаправлено из Base 32 )

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

В этой статье основное внимание уделяется использованию Base32 для представления байтовых строк, а не целых чисел без знака, аналогично тому, как Base64 работает .

Кодировки RFC 4648

[ редактировать ]

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

Кодировка Base 32 согласно §6

[ редактировать ]

Наиболее широко используемый [ нужна ссылка ] Алфавит base32 определен в RFC 4648 §6 и более ранних версиях. RFC   3548 (2003). Схема была первоначально разработана в 2000 году Джоном Майерсом для SASL / GSSAPI . [2] Он использует A Z которым , за 2–7 алфавит следуют . Цифры 0 , 1 и 8 пропускаются из-за их сходства с буквами O , I и B (таким образом, «2» имеет десятичное значение 26 ).

В некоторых случаях заполнение не требуется и не используется (заполнение можно определить по длине строки по модулю 8). В RFC 4648 указано, что необходимо использовать заполнение, если в спецификации стандарта (ссылающейся на RFC) явно не указано иное. Исключение заполнения полезно при использовании данных в кодировке Base32 в токенах URL или именах файлов, где символ заполнения может создать проблему.

Алфавит RFC 4648 Base32.
Ценить Символ Ценить Символ Ценить Символ Ценить Символ
0 А 8 я 16 вопрос 24 И
1 Б 9 Дж 17 Р 25 С
2 С 10 К 18 С 26 2
3 Д 11 л 19 Т 27 3
4 И 12 М 20 В 28 4
5 Ф 13 Н 21 V 29 5
6 Г 14 ТО 22 В 30 6
7 ЧАС 15 П 23 Х 31 7
прокладка =

Это пример представления Base32 с использованием ранее описанного набора из 32 символов ( IPFS CIDv1 в кодировке верхнего регистра Base32): BAFYBEICZSSCDSBS7FFQZ55ASQDF3SMV6KLCW3GOFSZVWLYARCI47BGF354

Кодировка Base 32 с расширенным шестнадцатеричным алфавитом согласно §7

[ редактировать ]

«Расширенный шестнадцатеричный» base 32 или base32hex , [3] другая схема для основания 32 согласно RFC 4648 §7 расширяет шестнадцатеричный код более естественным образом: его нижняя половина идентична шестнадцатеричной, а кроме того, base32hex просто продолжает алфавит до буквы V.

Эту схему впервые предложил Кристиан Ланкто, программист, работающий в Sage Software , в письме в Dr. Dobb's в марте 1999 года. журнал [4] как часть предлагаемого решения проблемы Y2K . Ланкто называл это «Двойным шестиугольником». Тот же алфавит был описан в 2000 году в RFC   2938 под названием «База-32». RFC 4648, признавая существующее использование этой версии в NSEC3 , называет ее base32hex и не рекомендует ссылаться на нее только как на «base32».

Поскольку в этой записи используются цифры 0–9, за которыми следуют последовательные буквы алфавита, она соответствует цифрам, используемым в JavaScript. parseInt() функция [5] и Питон int() конструктор [6] если указано основание больше 10 (например, 16 или 32). Он также сохраняет свойство шестнадцатеричного формата сохранять побитовый порядок сортировки представляемых данных, в отличие от §6 base32 или base64 RFC 4648. [3]

В отличие от многих других систем записи Base32, цифры Base32hex после 9 являются последовательными. Однако в его набор цифр входят символы, которые могут визуально противоречить друг другу. С помощью правильного шрифта можно визуально отличить 0, O и 1, I, но другие шрифты могут оказаться непригодными, поскольку людям будет трудно отличить эти буквы, особенно когда контекст, который обычно обеспечивает английский язык, отсутствует в Система обозначений, выражающая только числа. [б] Выбор шрифта не контролируется нотацией или кодировкой, однако base32hex не пытается компенсировать недостатки затронутых шрифтов. [с]

«Расширенный шестнадцатеричный» алфавит по основанию 32.
Ценить Символ Ценить Символ Ценить Символ Ценить Символ
0 0 8 8 16 Г 24 ТО
1 1 9 9 17 ЧАС 25 П
2 2 10 А 18 я 26 вопрос
3 3 11 Б 19 Дж 27 Р
4 4 12 С 20 К 28 С
5 5 13 Д 21 л 29 Т
6 6 14 И 22 М 30 В
7 7 15 Ф 23 Н 31 V
прокладка =

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

[ редактировать ]

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

z-base-32 [7] — это кодировка Base32, разработанная Зуко Уилкокс-О'Хирном, чтобы сделать ее более простой для использования человеком и более компактной. Он включает 1 , 8 и 9, но исключает l , v , 0 и 2 . Он также меняет алфавит так, что более простые символы встречаются чаще. [ нужны разъяснения ] Он компактно кодирует битовые строки, длина которых в битах не кратна 8. [ нужны разъяснения ] и опускает конечные символы заполнения. z-base-32 использовался в проекте с открытым исходным кодом Mnet и в настоящее время используется в Циммермана Фила протоколе ZRTP , а также в проекте с открытым исходным кодом Tahoe-LAFS .

алфавит z-base-32
Ценить Символ Ценить Символ Ценить Символ Ценить Символ
0 и 8 и 16 тот 24 а
1 б 9 дж 17 т 25 3
2 н 10 к 18 1 26 4
3 д 11 м 19 в 27 5
4 р 12 с 20 В 28 час
5 ж 13 п 21 я 29 7
6 г 14 д 22 с 30 6
7 8 15 х 23 С 31 9

База Крокфорда32

[ редактировать ]

Другой альтернативный дизайн для Base32 создан Дугласом Крокфордом , который предлагает использовать дополнительные символы для контрольной суммы mod-37. [8] Из него исключены буквы I, L и O, чтобы избежать путаницы с цифрами. Также исключена буква U, чтобы уменьшить вероятность случайной непристойности.

Библиотеки для кодирования двоичных данных в Base32 от Crockford доступны на разных языках.

Алфавит Крокфорда Base32
Ценить Закодировать цифру Декодировать цифру Ценить Закодировать цифру Декодировать цифру
0 0 0 о о 16 Г g G
1 1 1 я я л л 17 ЧАС чч
2 2 2 18 Дж дж дж
3 3 3 19 К к К
4 4 4 20 М м м
5 5 5 21 Н н н
6 6 6 22 П п п
7 7 7 23 вопрос q Q
8 8 8 24 Р р р
9 9 9 25 С SS
10 А А 26 Т т Т
11 Б б Б 27 V v V
12 С в С 28 В Вт Вт
13 Д д Д 29 Х х х
14 И и и 30 И и и
15 Ф ж Ф 31 С z Z

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

[ редактировать ]

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

См. алгоритм Geohash , используемый для представления значений широты и долготы в одном (чересстрочном) положительном целом числе. [9] Представление Geohash в формате Base32 использует все десятичные цифры (0–9) и почти весь нижний регистр алфавита, за исключением букв «a», «i», «l», «o», как показано на следующей карте символов:

десятичный 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
База 32 0 1 2 3 4 5 6 7 8 9 б с д и ж г
 
десятичный 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
База 32 час дж к м н п д р с т в v В х и С

Видеоигры

[ редактировать ]

До того, как 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! , «Машина времени Марио» , «Тетрис Blast » и «Властелин колец» (Super NES) .

Безопасный алфавит

[ редактировать ]

Безопасный для слов алфавит Base32 является расширением алфавита Open Location Code Base20 . В этом алфавите используются 8 цифр и 12 буквенных цифр, чувствительных к регистру, выбранных во избежание случайного образования слов. Обработка алфавита с учетом регистра дает набор из 32 (8+12+12) цифр.

десятичный 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
База 32 2 3 4 5 6 7 8 9 С Ф Г ЧАС Дж М П вопрос
 
десятичный 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
База 32 Р V В Х с ж г час дж м п д р v В х

Сравнение с другими системами

[ редактировать ]

Преимущества

[ редактировать ]

Base32 имеет ряд преимуществ перед Base64 :

  1. Результирующий набор символов имеет один регистр, что часто может быть полезно при использовании нечувствительной к регистру файловой системы , , DNS- имен, разговорного языка или человеческой памяти.
  2. Результат можно использовать в качестве имени файла, поскольку он не может содержать символ «/», который является Unix разделителем путей .
  3. Алфавит можно выбрать так, чтобы избежать похожих пар разных символов, чтобы строки можно было точно расшифровать вручную. (Например, В наборе символов RFC   4648 §6 отсутствуют цифры единицы, восьмерки и нуля, поскольку их можно спутать с буквами «I», «B» и «O».)
  4. Результат без заполнения можно включить в URL-адрес без кодирования каких-либо символов.

Base32 имеет преимущества перед шестнадцатеричным / Base16 :

  1. Представление Base32 занимает на 20% меньше места. (1000 бит занимает 200 символов по сравнению с 250 для Base16.)

По сравнению с 8-битными кодировками 5-битные системы также могут иметь преимущества при использовании для передачи символов:

  1. Схема RFC 4648 §6 Base32 и подобные ей, обладающие полным алфавитом, позволяют кодировать еще два символа на 32-битное целое число (всего 6 вместо 4, с двумя запасными битами), экономя полосу пропускания в ограниченных доменах, таких как радиосети.

Недостатки

[ редактировать ]

Представление Base32 занимает примерно на 20% больше места, чем Base64 . Кроме того, поскольку он кодирует пять 8-битных байтов (40 бит) в восемь 5-битных символов Base32, а не три 8-битных байта (24 бита) в четыре 6-битных символа Base64, заполнение до 8-символьной границы является более эффективным. нагрузка на короткие сообщения (что может быть причиной исключения отступов, что является опцией в RFC   4648 ).

Длина обозначений в процентах от двоичных данных
База64 База32 Шестнадцатеричный
8-битный 133% 160% 200%
7-битный 117% 140% 175%

Даже если Base32 занимает примерно на 20% меньше места, чем шестнадцатеричный , Base32 используется гораздо меньше. Шестнадцатеричное число легко преобразовать в байты, поскольку две шестнадцатеричные цифры составляют байт. Base32 не отображает отдельные байты. Однако две цифры Base32 соответствуют десяти битам, которые могут кодировать (32 × 32 =) 1024 значения, с очевидным применением для порядков многобайтовых единиц в терминах степеней 1024.

Шестнадцатеричную систему легче выучить и запомнить, поскольку для этого необходимо запомнить только числовые значения шести дополнительных символов (A – F), и даже если они не вызываются мгновенно, легче пересчитать чуть более нескольких значений.

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

[ редактировать ]

Base32 Программы подходят для кодирования произвольных байтовых данных с использованием ограниченного набора символов, которые могут быть удобно использованы людьми и обработаны компьютерами.

Реализации Base32 используют набор символов, состоящий как минимум из 32 различных символов (иногда из 33-го для заполнения), а также алгоритм кодирования произвольных последовательностей 8-битных байтов в алфавит Base32. Поскольку для представления каждого 8-битного входного байта требуется более одного 5-битного символа Base32, он также определяет требования к допустимой длине строк Base32 (которая должна быть кратна 40 битам; отсюда и заполнение). Близкородственная система Base64, напротив, использует набор из 64 символов.

Реализации Base32 на C/C++, [10] [11] Перл, [12] Ява, [13] JavaScript [14] Питон, [15] Идти [16] и Руби [17] доступны. [18]

См. также

[ редактировать ]
Базы, связанные с «Степеньями двойки»:     Другие базы:     Приложения base32:

Примечания

[ редактировать ]
  1. ^ Для контекста: предлагаемый стандарт также документирует две кодировки base64, и здесь также отдается предпочтение одной из них, хотя и по разным причинам. Задокументирована только одна кодировка Base16, которая давно была принята повсеместно, даже до публикации RFC 4648 или его предшественника RFC 3548.
  2. ^ Раньше это сходство было особенностью, а не ошибкой, поскольку оно позволяло ранним пишущим машинкам опускать дополнительные клавиши для цифр 0 и 1, тем самым уменьшая механическую сложность. Когда были представлены компьютеры, было сочтено желательным, чтобы первые компьютерные принтеры могли печатать тот же шрифт, что и качественные пишущие машинки, поэтому шрифты, похожие на пишущие машинки, сохраняли одинаковый вид этих букв. Спустя много лет уже нет необходимости использовать шрифты, в которых некоторые буквы не различаются четко, но традиция сохраняется. Подобные проблемы возникают не только у шрифтов в стиле пишущей машинки — они есть у многих влиятельных шрифтов, например Helvetica .
  3. ^ Дизайн многих вариантов base32 обусловлен тем, что рискованно предполагать, что будет использоваться различимый шрифт. С другой стороны, логика схемы, не пытающейся компенсировать особенности, выходящие за рамки ее компетенции, может быть более простой.
  1. ^ «Официальные стандарты протоколов Интернета » Редактор RFC» .
  2. ^ Майерс, Дж. (23 мая 2000 г.). Механизмы SASL GSSAPI . Идентификатор Draft-ietf-cat-sasl-gssapi-01 . Проверено 24 июня 2023 г.
  3. Перейти обратно: Перейти обратно: а б Йозефссон, Саймон (2006). «7. Кодировка Base 32 с использованием расширенного шестнадцатеричного алфавита» . RFC 4648: Кодировки данных Base16, Base32 и Base64 . IETF. дои : 10.17487/RFC4648 .
  4. ^ Ланкто, Кристиан (1 марта 1999 г.). «Лучшее свидание? (второе письмо под этим заголовком) — Письма» . Доктор Добб .
  5. ^ «parseInt() — JavaScript» . Веб-документы MDN . Мозилла. 29 декабря 2023 г.
  6. ^ «Встроенные функции» . Документация Python . Фонд программного обеспечения Python. Архивировано из оригинала 26 октября 2018 г. Проверено 9 августа 2017 г.
  7. ^ О'Уилакрокс, Зуко (2009). «Человекоориентированное кодирование base-32» .
  8. ^ Дуглас Крокфорд. «База 32» . Архивировано из оригинала 23 декабря 2002 г.
  9. ^ «Советы и рекомендации — geohash.org» . geohash.org . Проверено 03 апреля 2020 г.
  10. ^ «Циокод» . СоурсФордж . 24 июня 2023 г.
  11. ^ «Gnulib — Библиотека переносимости GNU — Проект GNU — Фонд свободного программного обеспечения» . www.gnu.org .
  12. ^ «MIME-Base32 — кодер и декодер Base32» . МетаCPAN . Проверено 29 июля 2018 г.
  13. ^ «Base32 (API кодека Apache Commons 1.15)» . commons.apache.org .
  14. ^ «база32» . НПМ . 27 сентября 2022 г.
  15. ^ «base64 — кодировки данных Base16, Base32, Base64, Base85» . Документация Python .
  16. ^ «Пакет Base32 — кодировка/Base32 — PKG.go.dev» .
  17. ^ «base32 | RubyGems.org | хост драгоценных камней вашего сообщества» . Rubygems.org .
  18. ^ «Конвертер строк в шестнадцатеричные» . Украсить код .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b46b7e97971bb4bc209e9bfd25064aac__1720339920
URL1:https://arc.ask3.ru/arc/aa/b4/ac/b46b7e97971bb4bc209e9bfd25064aac.html
Заголовок, (Title) документа по адресу, URL1:
Base32 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)