Конвертер Base32, Base58 и Ascii85
Кодируйте текст или сырые байты в Base32, Base58, Ascii85 или Z85 либо декодируйте любой из них обратно — с собственным алфавитом и правилами дополнения каждой кодировки. Таблица хода вычислений показывает, как первые байты превращаются в символы. Base64 описан в инструменте «Кодировщик и декодировщик текста». Работает в браузере; ничего не загружается.
Буквы A–Z и цифры 2–7, пять битов на символ, дополнение = до кратности восьми символам. При декодировании регистр не важен.
Как это было вычислено
Байты записываются битами и делятся на группы по пять. Каждая группа — число от 0 до 31, и оно выбирает один символ.
| Биты | Значение | Символ |
|---|---|---|
| 01001 | 9 | J |
| 00001 | 1 | B |
| 10010 | 18 | S |
| 10110 | 22 | W |
| 11000 | 24 | Y |
| 11011 | 27 | 3 |
| 00011 | 3 | D |
| 01111 | 15 | P |
| 00101 | 5 | F |
| 10000 | 16 | Q |
| 10000 | 16 | Q |
| 00101 | 5 | F |
| 01110 | 14 | O |
| 11011 | 27 | 3 |
| 11011 | 27 | 3 |
| 10010 | 18 | S |
Показаны первые 16 строк.
Как пользоваться конвертером кодировок Base
- 1. Выберите кодировку. Base32, Base32 с расширенным hex-алфавитом, Base58 с алфавитом Bitcoin, Ascii85 в варианте Adobe или Z85. Примечание под меню описывает выбранную кодировку.
- 2. Укажите, что за данные. Текст читается как байты UTF-8. Байты в hex позволяет кодировать произвольные двоичные данные, например ключ, которые вводятся парами вида
86 4f d2 6f. - 3. Кодируйте или декодируйте. Кодирование даёт текст из алфавита выбранной кодировки. Декодирование возвращает байты, которые показываются как текст или hex. Пробелы и переносы строк во вводе игнорируются.
- 4. Проверьте параметры. Base32 можно записывать с дополнением
=или без него. Ascii85 можно заключить в<~и~>и записывать четыре нулевых байта какz.
Для чего нужны эти кодировки
Ни одна из них не является шифрованием. Каждая превращает байты, которые могут быть непечатаемыми, в текст, который можно вставить в письмо, URL, QR-код или конфигурационный файл, и любой, кто знает название кодировки, может её обратить. Они различаются алфавитом и тем, насколько закодированный текст длиннее данных.
| Кодировка | Символов | Длина относительно байтов | Hello, World превращается в |
|---|---|---|---|
| Base32 (RFC 4648) | 32 | в 8 ÷ 5 раза длиннее | JBSWY3DPFQQFO33SNRSA==== |
| Base32 с расширенным hex | 32 | в 8 ÷ 5 раза длиннее | 91IMOR3F5GG5ERRIDHI0==== |
| Base58 (Bitcoin) | 58 | примерно в 1,37 раза | 2NEpo7TZsLBYdvo5V |
| Ascii85 (Adobe) | 85 | в 5 ÷ 4 раза | <~87cURD_*#4DfTZ)~> |
| Z85 (ZeroMQ) | 85 | в 5 ÷ 4 раза | nm=QNz.92jz/PV8 |
Base32
Base32 разбивает байты на 5-битные группы и записывает каждую одним из 32 символов — A–Z и 2–7. Используются только цифры от 2 до 7, без 0, 1 и 8, которые похожи на O, I и B; регистр букв не учитывается, поэтому её можно продиктовать вслух или набрать. Знак дополнения = округляет длину до кратной восьми. RFC 4648 приводит тестовые векторы, например foobar → MZXW6YTBOI======. Секреты приложений-аутентификаторов и адреса onion-сервисов Tor записываются в Base32.
Base58
Base58 рассматривает весь ввод как одно большое число и записывает его в системе с основанием 58, не используя 0, O, I и l, а также символы + и /, поэтому результат можно скопировать двойным щелчком и его трудно прочесть неверно. Каждый ведущий нулевой байт записывается как первый символ, 1. Алфавит Bitcoin — один из нескольких алфавитов Base58; у Ripple и Flickr символы упорядочены иначе, поэтому проверьте, какой использовали ваши данные. Адреса Bitcoin добавляют сверху контрольную сумму и байт версии — эта схема называется Base58Check, и данный инструмент её не вычисляет.
Ascii85 и Z85
Обе читают четыре байта как 32-битное число и записывают его пятью цифрами по основанию 85, поэтому они всего на 25 процентов длиннее данных. Ascii85 от Adobe, используемая в PostScript и PDF, берёт символы от ! до u, сокращает четыре нулевых байта до z и обычно заключает данные в <~ и ~>. Последняя группа из одного-трёх байтов даёт на один символ больше, чем байтов. Z85, определённая в RFC 32 ZeroMQ, использует другой 85-символьный алфавит, выбранный так, чтобы в исходном коде не было кавычек и обратных слешей; у неё нет сокращения z и нет короткой последней группы, поэтому вход должен быть кратен четырём байтам. Пример из спецификации — восемь байтов 86 4f d2 6f b5 59 f7 5b, которые кодируются в HelloWorld. Существуют и другие алфавиты base85, например из RFC 1924, который использует Git, поэтому подбирайте алфавит по источнику.
Часто задаваемые вопросы
- Base32 или Base58 — это шифрование?
- Нет. Это кодировки: любой может их обратить, потому что алфавит и правила открыты. Они делают данные печатаемыми и удобными для копирования, но не секретными.
- Почему Base58 не использует некоторые символы?
- Чтобы избежать похожих символов и знаков. Из алфавита исключены 0 (ноль), O (латинская заглавная O), I (латинская заглавная I) и l (латинская строчная L) — во многих шрифтах их легко спутать — а также + и /, которые ломают выделение двойным щелчком. Остаются 58 символов.
- Как декодировать строку Base32?
- Выберите Base32, переключитесь на «Декодировать» и вставьте строку. Регистр не важен, а завершающие знаки = необязательны. Если появляется ошибка с перечислением символов, строка, вероятно, в Base32 с расширенным hex, в Base64 или в другой кодировке.
- В чём разница между Ascii85 и Z85?
- Обе используют пять символов на четыре байта, но их алфавиты различаются. Ascii85 использует символы от ! до u, имеет сокращение z для нулей и может быть заключена в <~ и ~>. Z85 использует алфавит, безопасный для исходного кода, и не имеет сокращений.
- Почему Z85 требует кратности четырём байтам?
- Спецификация Z85 не определяет дополнения. Её данные должны быть целым числом 4-байтовых групп, а текст — кратным пяти символам. Добавьте байты сами или используйте Ascii85, которая обрабатывает короткую последнюю группу.
- Как закодировать строку в Base64?
- Этот инструмент Base64 не делает. «Кодировщик и декодировщик текста» переводит текст в Base64, URL и HTML-сущности и обратно, а «Шифр XOR» может показать hex-байты в виде Base64.