Base32

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

Base32 - это базовая -32 система счисления. Он использует набор из 32 цифр, каждая из которых может быть представлена ​​5 битами (2). Один из способов представления чисел Base32 в формате , удобочитаемом человеком - это использование стандартного набора из 32 символов, например, двадцати шести заглавных букв A – Z и цифр 2–7. Однако многие другие варианты используются в разных контекстах.

Это пример числа Base32, представленного с использованием ранее описанного набора из 32 символов (IPFS CIDv1 в кодировке верхнего регистра Base32): BAFYBEICZSSCDSBS7FFQZ55ASQDF3SMV6KLCW3GOFSZVWLYARCI47BGF354 <>1 Преимущества

  • 2 Недостатки
  • 3 RFC 4648 Алфавит Base32
  • 4 Альтернативные версии
    • 4.1 z-base-32
    • 4.2 Crockford's Base32
    • 4.3 Electrologica
    • 4.4 base32hex
    • 4.5 Geohash
    • 4.6 Видеоигры
    • 4.7 Словесный алфавит
  • 5 Программное обеспечение
  • 6 См. Также
  • 7 Ссылки
  • Преимущества

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

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

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

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

    Недостатки

    Представление Base32 занимает примерно на 20% больше места, чем Base64. Кроме того, поскольку он кодирует от 5 байтов до 8 символов (а не от 3 байтов до 4 символов), заполнение до 8-значной границы создает большую нагрузку на короткие сообщения.

    Длина нотаций Base64 и Base32 в процентах от двоичных данных
    Base64Base32
    8-битная133%160%
    7-битный117%140%

    RFC 4648 алфавит Base32

    Наиболее широко используемый алфавит Base32 определен в RFC 4648. Он использует алфавит из AZ, за которым следуют 27. 0 и 1 пропускаются из-за их сходства с буквами O и I (таким образом, "2" фактически имеет десятичное значение 26 ).

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

    Код RFC 4648 Базовый 32 алфавит
    ЗначениеСимволЗначениеСимволЗначениеСимволЗначениеСимвол
    0A8I16Q24Y
    1B9J17R25Z
    2C10K18S262
    3D11L19T273
    4E12M20U284
    5F13N21V295
    6G14O22W306
    7H15P23X317
    заполнение=

    Альтернативные версии

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

    z-base-32

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

    z-base-32 алфавит
    ЗначениеСимволЗначениеСимволЗначениеСимволЗначениеSymbol
    0y8e16o24a
    1b9j17t253
    2n10k181264
    3d11m19u275
    4r12c20w28h
    5f13p21i297
    6g14q22s306
    7815x23z319

    Base32 Крокфорда

    Другой альтернативный дизайн для Base32 создан Дугласом Крокфордом, который предлагает использовать дополнительные символы для контрольной суммы. Он исключает буквы I, L и O, чтобы не путать их с цифрами. Он также исключает букву U, чтобы уменьшить вероятность случайной непристойности.

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

    Алфавит Крокфорда Base32
    ЗначениеЦифра кодированияЦифра декодированияЗначениеЦифра кодированияЦифра декодирования
    000 o O16Gg G
    111 i I l L17Hh H
    22218Jj J
    33319Kk K
    44420Mm M
    55521Nn N
    66622Pp P
    77723Qq Q
    88824Rr R
    99925Ss S
    10Aa A26Tt T
    11Bb B27Vv V
    12Cc C28Ww W
    13Dd D29Xx X
    14Ee E30Yy Y
    15Ff F31Zz Z

    Electrologica

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

    base32hex

    Triacontakaidecimal - это еще один альтернативный дизайн для Base 32, который расширяет шестнадцатеричный более естественным образом и был впервые предложен Кристианом Ланкто, программистом, работающим в Программное обеспечение Sage в письме в журнал доктора Добба в марте 1999 г. в качестве предлагаемого решения для устранения ошибки 2000 года, названного «Double Hex». Эта версия описывалась в RFC 2938 под названием «Base-32». RFC 4648, признавая существующее использование этой версии в NSEC3, ссылается на нее как на base32hex и не рекомендует маркировать ее как «base32».

    Как и в шестнадцатеричном формате, используются цифры от 0 до 9, за которыми следуют буквы алфавита. Это соответствует цифрам, используемым функцией JavaScript parseInt ()и конструктором Python int (), когда база больше 10 ( например, 16 или 32). Он также сохраняет шестнадцатеричное свойство сохранения порядка побитовой сортировки представленных данных, в отличие от RFC 4648 base-32 или base-64.

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

    "Расширенный шестнадцатеричный" алфавит с основанием 32
    ЗначениеСимволЗначениеСимволЗначениеСимволЗначениеСимвол
    009918I27R
    1110A19J28S
    2211B20K29T
    3312C21L30U
    4413D22M31V
    5514E23N
    6615F24O
    7716G25P
    8817H26Qpad=

    Geohash

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

    Decimal0123456789101112131415
    Base 320123456789bcdefg
    Decimal16171819202122232425262728293031
    Base 32hjkmnpqrstuvwxyz

    Видеоигры

    До того, как NVRAM стал универсальным, несколько видеоигр для Платформы Nintendo использовали базовые 32 числа для паролей. Эти системы пропускают гласные, чтобы игра случайно не присвоила нечестный пароль. Таким образом, символы, как правило, представляют собой незначительную вариацию следующего набора: 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 является расширением открытого кода местоположения Base20 алфавита. В этом алфавите используются 8 цифровых цифр и 12 буквенных цифр без учета регистра, выбранных во избежание случайного образования слов. Если рассматривать алфавит как чувствительный к регистру, получается набор из 32 (8 + 12 + 12) цифр.

    Десятичный0123456789101112131415
    Базовый 3223456789CFGHJMPQ
    Десятичный16171819202122232425262728293031
    Базовый 32RVWXcfghjmpqrvwx

    Программный

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

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

    Доступны реализации Base32 на C / C ++, Perl, Java, JavaScript Python, Go и Ruby.

    См. Также

    "Полномочия двух" связанных баз: Другие базы: Применение base32:

    Ссылки

    1. ^O'Whielacronx, Zooko (2009 г.). «Ориентированная на человека кодировка base-32».
    2. ^Дуглас Крокфорд. «База 32». Архивировано из оригинала 23 декабря 2002 года.
    3. ^Ланкто, Кристиан (1999-03-01). «Лучшее свидание? (Вторая буква под заголовком) - Письма». Доктор Добб.
    4. ^"parseInt () - JavaScript". Веб-документы MDN. Mozilla.
    5. ^«Встроенные функции». Документация Python. Фонд программного обеспечения Python. Архивировано с оригинала 26.10.2018. Проверено 9 августа 2017.
    6. ^Йозефссон, Саймон (2006). «7. Кодирование Base 32 с расширенным шестнадцатеричным алфавитом». RFC 4648 : кодировки данных Base16, Base32 и Base64. IETF.
    7. ^"Советы и рекомендации - geohash.org". geohash.org. Проверено 3 апреля 2020 г.
    8. ^http://sourceforge.net/projects/cyoencode/
    9. ^https://www.gnu.org/software/gnulib/
    10. ^«MIME-Base32 - кодировщик Base32 и декодер ". MetaCPAN. Проверено 29 июля 2018 г.
    11. ^https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base32.html
    12. ^https: // www. npmjs.com/package/base32
    13. ^https://docs.python.org/3/library/base64.html
    14. ^https://golang.org/pkg/encoding/base32
    15. ^https:// rubygems.org/gems/base32
    Последняя правка сделана 2021-05-11 13:43:41
    Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
    Обратная связь: support@alphapedia.ru
    Соглашение
    О проекте